2

私には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 に答える