这两个linq查询有什么区别?

时间:2014-01-17 21:32:00

标签: c# linq linq-to-sql linqpad

下面有两个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();
}

1 个答案:

答案 0 :(得分:11)

  1. 第一个返回没有任何总价<<>小于 1000的订单的客户。
  2. 第二个客户拥有任何总价大于或等于的订单为<。li>。
  3. 换句话说,假设一个客户订购总价低于1000的订单,另一个订单总价高于1000.由于订单较小,客户记录不会包含在第一个结果集中,但由于订单较大,包含在第二个结果集中。