我有两个实体,Store
并且Catalog
使用流利的 Api 建立了多对多的关系。id
我想通过所有状态等于“已发布”的目录来获得商店。下面我尝试编写以下查询,但没有得到预期的结果。
var store = context.Stores.Include("Catalogs").Where(s => s.StoreID == id && s.Catalogs.Any(c => c.Status == "Published")).SingleOrDefault();
我有两个实体,Store
并且Catalog
使用流利的 Api 建立了多对多的关系。id
我想通过所有状态等于“已发布”的目录来获得商店。下面我尝试编写以下查询,但没有得到预期的结果。
var store = context.Stores.Include("Catalogs").Where(s => s.StoreID == id && s.Catalogs.Any(c => c.Status == "Published")).SingleOrDefault();
您所要求的是“给我具有此 ID 的商店,但前提是它具有已发布的目录”(“任何”调用)。
仅获取已发布目录的最简单方法是将它们投影为匿名类型:
var result = (from s in context.Stores
where s.StoreID == id
select new
{
Store = s,
Catalogs = s.Catalogs.Where(c => c.Status == "Published")
}).SingleOrDefault();
...或者,在流畅的界面中:
var result = context.Stores.Where(st => st.StoreID == id)
.Select(s => new
{
Store = s,
Catalogs = s.Catalogs.Where(c => c.Status == "Published"),
}).SingleOrDefault();
所以result.Catalogs
保留所有适用于result.Store
.