2

我有两个实体,Store并且Catalog使用流利的 Api 建立了多对多的关系。id我想通过所有状态等于“已发布”的目录来获得商店。下面我尝试编写以下查询,但没有得到预期的结果。

var store = context.Stores.Include("Catalogs").Where(s => s.StoreID == id && s.Catalogs.Any(c => c.Status == "Published")).SingleOrDefault();
4

1 回答 1

2

您所要求的是“给我具有此 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.

于 2013-03-11T05:20:16.290 回答