关于Linq语句

 Linq语句是一组方法,允许以最少的代码对集合执行筛选、排序和分组操作。Linq代表语言集成查询。它是一组基于将查询功能集成到C#语言中的技术的名称。虽然Linq方法不是语言集成的,但是还有一个声明性的、语言集成的查询snytax。

  数组

  最基本可枚举项是数组,它可以存储固定数量的类型化元素。

  int[] numbers = new int[3] { 1, 2, 3};

  上面的代码中创建了一个容纳了3个值的整数数组,并用值1、2和3初始化该数组。将该数组分配给int[]类型的变量命名为numbers。可以通过索引或枚举值来访问数组的每个元素。

   int fistNumber = numbers[0]; //1
  foreach( int number in numbers){
   
   
     Console.WriteLine(number); // 1,2,3
}

 列表

 一种常见的枚举类型是列表,与数组不同,列表的大小是可变的。

var number = new list<int>{1,2,3};

 上面的例子中,创建了一个整数列表,并用三个值1,2,3初始化它。使用关键字var来定义数字的类型。使用var,我们让编译器决定使用哪种类型。当我们将List<int>类型的对象分配给数字时,变量的类型将是List<int>。同样可以访问这些值索引它们同样可以枚举。

 var    FirstNumber = number[0];     //1
froeach(var numbers in number){
   Console.WriteLine(numbers); // 1,2,3
}

  集合

集合包含唯一的元素,例如,HashSet类提供高性能的集合操作(例如UnionWith、IntersectWith等)

  var number = new HashSet<int>{1,2,3}

 与前面2个数组和列表不同的是,你无法通过集合的索引访问集合的元素。哈希集中没有元素索引这样的概念。但是,仍然可以枚举存储在集合中的值。

  foreach( int number in numbers){
   
   
  Console.WriteLine(number); //1,2,3
}
 虽然所有可枚举类型都有不同的目的和方法,但它们有一个共同的特点。它们都实现了相同的接口,即IEnumerable<T>,Net中,C#中有一个声明性语言结构,使处理枚举项变得容易,比如上面的foreach循环。

  另外注意的事项:接口IEnumberable<T>是一个通用接口。这意味着枚举是强类型的,但可以在代码中定义具体类型。强类型意味着它只能保存指定类型的元素(或可以隐形转换该类型的元素)。T是模板类型,是指定类型的放置顺序。

  类型列表<T>也是泛型类型。该列表可用于任何类型(<T>)。但是,你必须在代码中选择固定类型。例如<int>(整形列表)是IEnumerable<int>(整数可枚举)可以向列表中添加int值。你还可以向列表中添加字节值(因为它们可以自动转换为int,即隐形转换,而不会丢失)。但是,不能向列表中添加字符串或长值。前者根本无法装换为整数,后者可以转换为整数,但可能会丢失数据,而且这永远不会自动完成。

   过滤数据

在许多情况下,必须过滤数据集,数据集是对象的集合(IEnumerable<T>),攀登谓词是一个表达式或函数,可以决定是否保留某个项。如果谓词匹配,则保留该项。如果没有,你就试着把它赶走。下面的例子:从数字列表中只保留正值。过滤数据的第一种方法是创建一个新的空列表,然后对数字进行枚举,并将正值添加到新列表中。

上面成功创建了一个过滤方法KeepositiveNumbers,在这个方法中,我们可以传递一个任意数字列表作为输入,而只得到一个正数列表。该方法接受任何IEnumerable<int>,因此该方法使用实现IEnumerable<T>接口的数组、列表或其他数据结构。待补充。。

猜你喜欢

转载自blog.csdn.net/weixin_44591600/article/details/124268444