0

Select または SelectMany を使用してネストされたクエリを作成することに固執しました。

次の従来のネストされたリストを見てみましょう。

Sheet has Title fields
SheetDetail has Employee fields

各シートには、マスターと詳細の方法として複数の SheetDetails があります。

以下のような結果にしたいと思います。

以下のデータから...

Sheet   - SheetDetail
"A Sheet"-{"jane","herry","tom"}
"B Sheet"-{"kane","brown","jane"}
"C Sheet"-{"annie","ralph"}

以下の結果には、「jane」のみがありますが、同じマスター/ディテール構造を維持しています。

Sheet   - SheetDetail
"A Sheet"-{"jane"}
"B Sheet"-{"jane"}

私は試した

sheet.SelectMany(s => s.SheetDetails.Where(d => d.Description.Contains("jane")));

しかし、想像できるように、それは間違った結果をもたらします。

どうすれば作れますか?助けてください-

4

2 に答える 2

2

Any以下を確認するために使用できます。

Sheet.Where(s => s.SheetDetails.Any(d => d.Description == "jane")))
    .Select(s => new Sheet {
            Description = s.Description,
            SheetDetails = s.SheetDetails.Where(d => d.Description == "jane")
        });
于 2013-01-22T06:17:53.643 に答える
1

結果として SheetDetail を 1 つだけ取得したい場合は、次のような匿名オブジェクトを作成できます。

sheet
  .Where(s => s.SheetDetails.Any(d => d == "jane"))
  .Select(s => new {Sheet = s, SheetDetail == s.SheetDetails.First(d => d == "jane")});
于 2013-01-22T06:21:15.027 に答える