Linq - 关于'任何'方法的问题

Ran*_*der 6 linq

假设我对AdventureWorks DB有以下查询:

var result = from customer in Customer
    where customer.CustomerAddress.Any (ca => ca.Address.City == "Dallas")
    select new
    {
        customer.Individual.Contact.FirstName,
        Addresses = customer.CustomerAddress
    };
Run Code Online (Sandbox Code Playgroud)

此查询将返回所有居住在达拉斯的客户.但是,我不确定它为什么会起作用.我知道'Any'方法返回一个布尔值,具体取决于序列中的任何行是否满足谓词.但是以这种方式使用,它似乎实际上返回了一系列满足谓词的行.我想我不确定这里到底发生了什么.

但是,按以下方式使用,很容易理解'Any'是如何工作的:

var result = Customer.Any (c => c.CustomerAddress.Any (ca => ca.Address.City == "Largo" ) );
Run Code Online (Sandbox Code Playgroud)

这返回false,因为没有客户住在Largo.

Ant*_*ram 11

第一个查询可以读作

退回在达拉斯拥有任何地址的所有客户.

查询中的响应或结果是"这里是那些客户".第一个查询,Any严格违反地址.因此返回具有满足该地址的Any客户.

第二个查询为

我有任何在Largo有任何地址的客户吗?

结果是是或否(真或假).已应用Any这两个地址和的结果Any上的地址.所以查询的第一部分是"由Largo地址的客户过滤",第二部分是"现在我想知道的是我是否有这样的客户."

现在有意义吗?