返回使用存储库模式传入ID列表的模型列表
本文关键字:列表 ID 模型 模式 存储 返回 | 更新日期: 2023-09-27 18:25:30
我正在使用基于的工作单元模式的存储库
http://www.asp.net/mvc/tutorials/getting-started-with-ef-using-mvc/implementing-the-repository-and-unit-of-work-patterns-in-an-asp-net-mvc-application
他们的Get函数看起来像:
public virtual IEnumerable<TEntity> Get(
Expression<Func<TEntity, bool>> filter = null,
Func<IQueryable<TEntity>, IOrderedQueryable<TEntity>> orderBy = null,
string includeProperties = "")
现在我想要得到一个行列表作为输出。
查询还将有一个WHERE IN子句,如:
SELEcT *
FROM ...
INNER JOIN ...
WHERE homeId in (select homeId ....)
我有家庭ID的列表:
List<int> homeIdList = ...
如何使用上面的Get方法构建此查询?
Get(x => x.Id == cityId, includeProperties: "CityBlock, CityBlock.Homes")
以上是一个类似于我想要的查询,但我想将Homes限制在ListhomeIdList中其id所在的位置。
可能吗?
使用List的Contains
方法,该方法将被转换为sql的in
运算符。我建议你尝试获得一份包括CityBlock
和City
房产的住宅列表,然后你可以使用linq获取所有城市:
var repository = new GenericRepository<Home>();
var homes = repository.Get(home => homeIdList.Contains(home.Id),
includeProperties: "CityBlock, CityBlock.City")
.ToList();
var cities = homes.Select(h => h.CityBlock.City).Distinct().ToList();
希望这能有所帮助。