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

Dee*_*ent 1 c# linq linqpad linq-to-sql

下面有两个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();
}
Run Code Online (Sandbox Code Playgroud)

p.s*_*w.g 11

  1. 第一个返回没有任何总价低于 1000的订单的客户.
  2. 第二个返回具有总价格大于或等于 1000的任何订单的客户.

换句话说,想象一个客户将总价格低于1000的一个订单,以及另一个总价格大于1000的订单.由于订单较小,客户记录不会包含在第一个结果集中,而是因为较大的顺序,被包括在所述第二结果集.