C# Any()和AII()方法

3c38f081bdd2d74f6f7b7c6315b1a828.png

我们常常需要的另一类查询是确定数据是否满足某个条件,或者确保所有数据都满足某个条件。例如,需要确定某个产品是否已经脱销(库存为 0),或者是否发生了某个交易。

8fc726c7f3b60bd70022dca03e2e1f89.png

LINQ 提供了两个布尔方法:Any()和 All(),它们可以快速确定对于数据而言,某个条件是 true 还是 false。因此很容易地找到数据,如下面的示例所示。

038812efa1b47cc7313a346f91675b88.png

按照下面的步骤在Visual Studio 中创建示例:

(1)创建一个新的控制台应用程序。

4b4a57e10f28af08d329f28176ceb0b4.png

(2)创建 Customer 类的代码和初始化顾客列表(List<Customer>customers)的代码。

f01f9ee6e42036c2c456932d14345305.png

(3)在Main() 方法中,在 customers 列表初始化和查询声明后,删除处理循环,输入如下所示的代码:

bool anyUSA = customers.Any(c => c.Country == "USA"); 
if (anyUSA)
{
   Console.WriteLine("Some customers are in the USA");
}
else
{
   Console.WriteLine("No customers are in the USA");
}
bool allAsia = customers.All(c => c.Region == "Asia"); 
if (allAsia)
{
   Console.WriteLine("All customers are in Asia");
}
else
{
   Console.WriteLine("Not all customers are in Asia");
}

48b2e2b92222c69abc6fb3b6a049f38e.png

(4)编译并执行程序,将看到一些消息,指出一些顾客来自美国,并不是所有的顾客都来自亚洲:

Some customers are in the USA 
Not all customers are in Asia
Program finished, press Enter/Return to continue:

8662c67819d721a2d4a0e542f7f9a616.png

示例的说明

Customer 类和 customers 列表的初始化与前面例子中的相同。在第一个查询语句中,调用了 Any() 方法,用一个简单的 Lambda 表达式检查 Customer Country 字段的值是不是USA:

bool anyUSA = customers.Any(c => c.Country == "USA");

c8e5f6b91953e33249f9508e7ac81aed.png

LINQ方法Any() 把传送给它的 Lambda 表达式 c=>c.Country=="USA"应用于customers 列表中的所有数据,如果对于列表中的任意顾客,Lambda 表达式是 true,就返回 true。

5c0cc9644da81a9d8733ae4da68db4ab.png

接着检查 Any() 方法返回的布尔结果变量,输出一个消息,显示查询的结果 Any()方法虽然仅返回 true 或 false,但它会执行一个查询,得到 true 或 false 结果):

if (anyUSA)
{
   Console.WriteLine("Some customers are in the USA");
}
else
{
   Console.WriteLine("No customers are in the USA");
}

087e6483725fbf920275e65de5d9f9e3.png

虽然可以通过一些巧妙的代码使这个消息更紧凑一些,但这里的代码比较直观,便于理解。anyUSA 设为 true, 因为数据集中的确有顾客居住在美国,所以看到了消息 Some customers are in the USA.

77f89575ecd55fa7001a7b079306dce8.png

在下一个查询语句中,调用了 AII() 方法,利用另一个简单的 Lambda 表达式确定是否所有的顾客都来自亚洲:

bool allAsia = customers.All(c=> c.Region =="Asia");

b4119c538df5d404a686ae53569f2621.png

LINQ 方法All() 把 Lambda 表达式应用于数据集,并返回 false,因为有一些顾客不是来自亚洲。然后根据 allAsia 的值返回相应的消息。

技术群:添加小编微信并备注进群

小编微信:mm1552923   

公众号:dotNet编程大全    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值