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 回答