假设我对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地址的客户过滤",第二部分是"现在我想知道的是我是否有这样的客户."
现在有意义吗?
| 归档时间: |
|
| 查看次数: |
326 次 |
| 最近记录: |