Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 这两个linq查询之间有什么区别?_C#_Linq_Linq To Sql_Linqpad - Fatal编程技术网

C# 这两个linq查询之间有什么区别?

C# 这两个linq查询之间有什么区别?,c#,linq,linq-to-sql,linqpad,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) sel

下面有两个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();
}
void Main()
{
var q1=客户中的c
其中!c.Orders.Any(o=>o.OrderDetails.Sum(od=>od.UnitPrice*od.Quantity)<1000)
选择新建{c.CustomerID,c.ContactName};
q1.Dump();
var q2=来自客户的c
其中c.Orders.Any(o=>o.OrderDetails.Sum(od=>od.Quantity*od.UnitPrice)>=1000)
选择新建{c.CustomerID,c.ContactName};
q2.Dump();
}
  • 第一个返回没有任何订单且总价格小于1000的客户
  • 第二个返回拥有任何订单且其总价格大于或等于1000的客户
  • 换言之,假设一个客户的订单总价低于1000,而另一个订单总价高于1000。由于订单较小,客户记录不会包含在第一个结果集中,但由于订单较大,它包含在第二个结果集中

  • 第一个返回没有任何订单且总价格小于1000的客户
  • 第二个返回拥有任何订单且其总价格大于或等于1000的客户

  • 换言之,假设一个客户的订单总价低于1000,而另一个订单总价高于1000。由于订单较小,客户记录不会包含在第一个结果集中,但由于订单较大,它会包含在第二个结果集中。

    可能更容易理解:
    !Any()
    All()
    相同。区别可能在于数据库如何计算空值,但对于将此列为答案的内容还不够自信。可能更容易理解:
    !Any()
    All()
    相同,区别可能在于数据库如何计算空值,但还没有足够的信心将其列为答案。