4

次のクエリがあります。

 DateTime cutoffDate = new DateTime(1997, 1, 1); 

 var orders = 
     from c in customers 
     where c.Region == "WA" 
     from o in c.Orders 
     where o.OrderDate >= cutoffDate 
     select new { c.CustomerID, o.OrderID };

これはLinq Lambdaでどのように記述できますか? ところで、これは SelectMany クエリとして知られていますか?

また、これは結合で行うことができます。上に示すように、それを行うことの長所と短所は何ですか。

4

1 に答える 1

7

はい、これはSelectManyです。SelectManyネストされたコレクションまたは階層化されたコレクション (この場合、注文は顧客の下にネストされています) を単純な単一層のコレクションに「フラット化」するために使用します。

customers.Where(c => c.Region == "WA")
    .SelectMany(c => c.Orders)
    .Where(o => o.Orderdate >= cutoffDate)
    .Select(x => new { x.OrderID, x.Customer.CustomerID });

注文が顧客の所有物である場合、結合を使用する必要はありません。

于 2012-09-09T00:44:41.647 に答える