C# Any()和AII()方法的区别

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

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

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

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

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

(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");
}

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

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

示例的说明

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

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

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

接着检查 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");
}

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

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

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

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

到此这篇关于C# Any()和AII()方法的区别的文章就介绍到这了,更多相关C# Any()和AII()内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • C#中的Task.WhenAll和Task.WhenAny方法介绍

    一.简介 Task.WhenAll().Task.WhenAny()这两个与Task.WaitALL().Task.WaitAny()是有区别的,When是异步的,Wait是同步的.Task.WhenAll():所有提供的任务已完成时,创建将完成的任务.Task.WhenAny():任何提供的任务已完成时,创建将完成的任务. 二.代码案例 Task.WhenAll 代码: class Program { public class DownLoadTest { Stopwatch watch =

  • 详解C# List<T>的Contains,Exists,Any,Where性能对比

    测试 新建一个Person类 public class Person { public Person(string name,int id) { Name = name; Id = id; } public string Name { get; set; } public int Id { get; set; } } 初始化List 中有一百万条数据,然后分别通过每种方法判断xiaoming是否在List中,代码如下 static void Main(string[] args) { List<

  • C#中的Task.WaitAll和Task.WaitAny方法介绍

    一.简介 Task.WaitAll:等待所有提供的 Task 对象完成执行过程. Task.WaitAny:等待提供的任一 Task 对象完成执行过程. 二.代码案例 Task.WaitAll 代码: class Program { public class DownLoadTest { Stopwatch watch = new Stopwatch(); public DownLoadTest() { watch.Start(); } public async Task DoRunTaskAs

  • C# Any()和AII()方法的区别

    我们常常需要的另一类查询是确定数据是否满足某个条件,或者确保所有数据都满足某个条件.例如,需要确定某个产品是否已经脱销(库存为 0),或者是否发生了某个交易. LINQ 提供了两个布尔方法:Any()和 All(),它们可以快速确定对于数据而言,某个条件是 true 还是 false.因此很容易地找到数据,如下面的示例所示. 按照下面的步骤在Visual Studio 中创建示例: (1)创建一个新的控制台应用程序. (2)创建 Customer 类的代码和初始化顾客列表(List<Custom

  • js正则表达式中test,exec,match方法的区别说明

    js正则表达式中test,exec,match方法的区别说明 test test 返回 Boolean,查找对应的字符串中是否存在模式.var str = "1a1b1c";var reg = new RegExp("1.", "");alert(reg.test(str)); // true exec exec 查找并返回当前的匹配结果,并以数组的形式返回.var str = "1a1b1c";var reg = new R

  • JavaScript中递归实现的方法及其区别

    递归函数:递归函数是在通过名字调用自身的情况下构成的. 递归实现阶乘函数: 方法一:通过使用函数的名字 function factorial(num){ if(num<=1){ return 1; }else{ return num*factorial(num-1); } } console.log(factorial(4)); 结果为:24: 但是这种方法实现递归有一个问题,观察以下代码: function factorial(num){ if(num<=1){ return 1; }els

  • java 线程中start方法与run方法的区别详细介绍

    线程中start方法与run方法的区别 在线程中,如果start方法依次调用run方法,为什么我们会选择去调用start方法?或者在java线程中调用start方法与run方法的区别在哪里?  这两个问题是两个非常流行的初学者级别的多线程面试问题.当一个Java程序员开始学习线程的时候,他们首先会学着去继承Thread类,重载run方法或者实现Runnable接口,实现run方法,然后调用Thread实例的start方法.但是当他拥有一些经验之后,他通过查看API文档或者其他途径会发现start

  • Java线程池的几种实现方法和区别介绍实例详解

    下面通过实例代码为大家介绍Java线程池的几种实现方法和区别: import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Random; import java.util.concurrent.Callable; import java.util.

  • 浅谈Java异常的Exception e中的egetMessage()和toString()方法的区别

    Exception e中e的getMessage()和toString()方法的区别: 示例代码1: public class TestInfo { private static String str =null; public static void main(String[] args) { System.out.println("test exception"); try { if(str.equals("name")){ System.out.println

  • 浅谈django model的get和filter方法的区别(必看篇)

    django的get和filter方法是django model常用到的,搞清楚两者的区别非常重要. 为了说明它们两者的区别定义2个models class Student(models.Model): name = models.CharField('姓名', max_length=20, default='') age = models.CharField('年龄', max_length=20, default='') class Book(models.Model): student =

  • JavaScript中的toString()和toLocaleString()方法的区别

    偶然之间用到这两个方法 然后在数字转换成字符串的时候,并没有感觉这两个方法有什么区别,如下: var e=123 e.toString() "123" e.toLocaleString() "123" 是吧,并没有什么区别 再继续看数组转成字符串分别用这两个方法有什么区别呢,看看,代码如下 var aa=[1,2,3] aa.toLocaleString() "1,2,3" aa.toString() "1,2,3" 也并没有

  • C#中析构函数、Dispose、Close方法的区别

    一.Close与Dispose这两种方法的区别 调用完了对象的Close方法后,此对象有可能被重新进行使用:而Dispose方法来说,此对象所占有的资源需要被标记为无用了,也就是此对象要被销毁,不能再被使用.例如常见.Net类库中的SqlConnection这个类,当调用完Close方法后,可以通过Open重新打开一个数据库连接,当彻底不用这个对象了就可以调用Dispose方法来标记此对象无用,等待GC回收. 二.三者的区别如图 析构函数 Dispose方法 Close方法 意义 销毁对象 销毁

  • PHP中数组合并的两种方法及区别介绍

    PHP数组合并两种方法及区别 如果是关联数组,如下: 复制代码 代码如下: $a = array( 'where' => 'uid=1', 'order' => 'uid', ); $b = array( 'where' => 'uid=2', 'order' => 'uid desc', ); 1. array_merge,如果两个数组存在相同的key,后面的一个会覆盖前面的 复制代码 代码如下: <?php $c = array_merge($a, $b); var_ex

随机推荐