【发布时间】:2014-01-17 21:32:00
【问题描述】:
下面有两个 linq 查询,它们返回完整的差异结果,第一个查询返回 4 条记录,第二个返回 72 条记录。我认为他们是一样的。谁能解释他们为什么返回差异记录集。感谢您的帮助。
void Main()
{
var q1 = from c in Customers
where !c.Orders.Any(o => o.OrderDetails.Sum(od => od.UnitPrice * od.Quantity) < 1000)
select new {c.CustomerID, c.ContactName};
q1.Dump();
var q2 = from c in Customers
where c.Orders.Any(o => o.OrderDetails.Sum(od => od.Quantity * od.UnitPrice) >= 1000)
select new {c.CustomerID, c.ContactName};
q2.Dump();
}
【问题讨论】:
-
可能更容易理解:
!Any()和All()一样 -
不同之处可能在于数据库评估 NULL 的方式,但对将发生的事情列为答案还不够自信。
标签: c# linq linq-to-sql linqpad