来自MSDN Linq运营商的文章我发现如下声明。我
https://code.msdn.microsoft.com/LINQ-to-DataSets-09787825
SelectMany - 来自作业
var orders =
from c in customers
from o in c.Orders
where o.Total >= 2000.0M
select new { c.CustomerID, o.OrderID, o.Total };
我的问题是没有为客户和订单写任何地方或加入条件,它如何只显示大于2000.0M的订单。该声明不会创建交叉连接。
答案 0 :(得分:5)
不,查询等同于:
foreach(var c in customers)
{
foreach(var o in c.Orders)
{
if(o.Total >= 2000.0M)
yield return new { c.CustomerID, o.OrderID, o.Total };
}
}
所以没有join
。您只是过滤了orders
。
答案 1 :(得分:0)
您可以尝试选择多个。但是我认为这基本上与内部联接做同样的事情。
var orders = customers.SelectMany(c => c.Orders)
.Where(o => o.Total >= 2000.0M).ToList();