我有以下查询:
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 };
Run Code Online (Sandbox Code Playgroud)
怎么能用Linq Lambda写的呢?BTW,这被称为SelectMany查询吗?
这也可以通过连接来完成,如上所示,这样做的优点和缺点是什么.
是的,这是一个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 });
Run Code Online (Sandbox Code Playgroud)
如果订单是客户的财产,则无需使用联接.