对于List的All,Any,Where,FirstOrDefault,Average,Sum,Distinct,Union,AddRange,RemoveRange,InsertRange,GetRange操作

对于集合的操作发现现在越来越丰富,今日圣诞节,以常用的List<T>为例静静地看了集合的一些操作,用了发现还真方便。

一、集合的合并,插入,删除,显示
AddRange(一个集合):将指定集合的元素添加到末尾。
RemoveRange(要移除的元素的范围从零开始的起始索引,要移除的元素数):移除一定范围的元素
InsertRange(在此处插入新元素的从零开始的索引,一个集合):将集合插入到指定索引处。也可以对集合选择范围后再插入
GetRange(范围开始处从零开始的起始索引,范围中的元素数):返回指定范围的数据,此数据是一个浅表副本,浅表副本仅包含对

该集合的元素的引用

例如Program.cs的代码:

[c-sharp] view plaincopy

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. namespace ConsoleAppList
  6. {
  7. class Program
  8. {
  9. static void Main(string[] args)
  10. {
  11. string[] stuName = { "AAAA", "BBBB", "CCCC"};
  12. List<string> li = new List<string>(stuName);
  13. Console.WriteLine("合并另一个集合:");
  14. li.AddRange(li);
  15. foreach (string name in li)
  16. {
  17. Console.WriteLine(name);
  18. }
  19. Console.WriteLine("/r/n删除操作(指定索引位置,删除个数):");
  20. li.RemoveRange(2, 2);
  21. foreach (string name in li)
  22. {
  23. Console.WriteLine(name);
  24. }
  25. Console.WriteLine("/r/n指定索引位置,插入另一个集合:");
  26. stuName = new string[] {"张三","李四","王五"};
  27. li.InsertRange(3, stuName);
  28. //选择要插入的集合指定范围
  29. //li.InsertRange(3, new List<string>(stuName).GetRange(1, 2));
  30. foreach (string name in li)
  31. {
  32. Console.WriteLine(name);
  33. }
  34. Console.WriteLine("/r/n显示指定索引范围的数据:");
  35. string[] output = li.GetRange(2, 3).ToArray();
  36. //List<string> output = li.GetRange(2, 3);
  37. foreach (string name in output)
  38. {
  39. Console.WriteLine(name);
  40. }
  41. }
  42. }
  43. }

运行结果:

合并另一个集合:
AAAA
BBBB
CCCC
AAAA
BBBB
CCCC

删除操作(指定索引位置,删除个数):
AAAA
BBBB
BBBB
CCCC

指定索引位置,插入另一个集合:
AAAA
BBBB
BBBB
张三
李四
王五
CCCC

显示指定索引范围的数据:
BBBB
张三
李四
请按任意键继续. . .

二、集合常用判断,选择,计算等功能
All()定序列中的所有元素是否满足条件。
Any()确定序列中的任何元素中,是否有存在或满足条件的元素。
Where()返回满足条件的元素.基于谓词筛选值序列
FirstOrDefault()返回序列中的第一个元素;如果序列中不包含任何元素,则返回默认值。
Average()值序列的平均值
Sum()值序列的和
Distinct()返回序列中的非重复元素
Union()通过使用默认的相等比较器生成两个序列的并集。去掉重复元素

例如Program2.cs的代码:

[c-sharp] view plaincopy

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. namespace ConsoleAppList
  6. {
  7. public class Student
  8. {
  9. public string Name { get; set; }
  10. public string Sex { get; set; }
  11. public int Age { get; set; }
  12. }
  13. class Program
  14. {
  15. static void Main(string[] args)
  16. {
  17. Student[] stu={ new Student{Name="张三", Sex="男",Age=22},
  18. new Student{Name="李四", Sex="男",Age=33},
  19. new Student{Name="王五", Sex=" 女",Age=19}};
  20. List<Student> li = new List<Student>(stu);
  21. //是否所有学生都是男生
  22. bool allMale = li.All(s => s.Sex == "男");
  23. Console.WriteLine("是否所有学生都是男生:"+allMale);
  24. //是否存在男生的学生
  25. bool anyMale = li.Any(s => s.Sex == "男");
  26. Console.WriteLine("/r/n是否存在男生的学生:" + anyMale);
  27. //显示年龄大于或等于20的学生
  28. Console.WriteLine("/r/n显示年龄大于或等于20的学生:");
  29. IEnumerable<Student> query = li.Where(s => s.Age >= 20);
  30. foreach (Student s in query)
  31. {
  32. Console.WriteLine("姓名:" + s.Name + ",性别:" + s.Sex + ",年龄" + s.Age.ToString());
  33. }
  34. //返回序列中的第一个元素
  35. Console.WriteLine("/r/n返回序列中的第一个元素:");
  36. Student sFirstDef = li.FirstOrDefault<Student>();
  37. Console.WriteLine("姓名:" + sFirstDef.Name + ",性别:" + sFirstDef.Sex + ",年龄" + sFirstDef.Age.ToString());
  38. //所有学生的平均年龄
  39. double avgAge = li.Average<Student>(s => s.Age);
  40. Console.WriteLine("/r/n所有学生的平均年龄:" + avgAge.ToString("f2"));
  41. //所有学生的总龄
  42. int avgSum = li.Sum<Student>(s => s.Age);
  43. Console.WriteLine("/r/n所有学生的总龄:" + avgSum);
  44. //返回序列中的非重复元素
  45. List<int> ages = new List<int>() {22,33,22,19,28,27,22,33 };
  46. IEnumerable<int> distinctAges = ages.Distinct<int>();
  47. Console.WriteLine("/r/n返回序列中的非重复元素:");
  48. foreach (int a in distinctAges)
  49. {
  50. Console.Write(a+",");
  51. }
  52. Console.WriteLine();
  53. //生成两个序列的并集,去掉重复元素
  54. Console.WriteLine("/r/n生成两个序列的并集,去掉重复元素:");
  55. int[] ints1 = { 5, 3, 9, 7, 5};
  56. int[] ints2 = { 8, 3, 6, 4, 4};
  57. IEnumerable<int> union = ints1.Union(ints2);
  58. foreach (int num in union)
  59. Console.Write("{0} ", num);
  60. Console.WriteLine();
  61. }
  62. }
  63. }

运行结果:

是否所有学生都是男生:False

是否存在男生的学生:True

显示年龄大于或等于20的学生:
姓名:张三,性别:男,年龄22
姓名:李四,性别:男,年龄33

返回序列中的第一个元素:
姓名:张三,性别:男,年龄22

所有学生的平均年龄:24.67

所有学生的总龄:74

返回序列中的非重复元素:
22,33,19,28,27,

生成两个序列的并集,去掉重复元素:
5 3 9 7 8 6 4
请按任意键继续. . .

时间: 2024-12-29 06:45:43

对于List的All,Any,Where,FirstOrDefault,Average,Sum,Distinct,Union,AddRange,RemoveRange,InsertRange,GetRange操作的相关文章

LINQ标准查询操作符(三)——Aggregate、Average、Distinct、Except、Intersect、Union、Empty、DefaultIfEmpty、Range、Repeat

本文来自:http://blog.csdn.net/xuejianwu/article/details/6931903 七.聚合操作符 聚合函数将在序列上执行特定的计算,并返回单个值,如计算给定序列平均值.最大值等.共有7种LINQ聚合查询操作符:Aggregate.Average.Count.LongCount.Max.Min和Sum. 1. Aggregate Aggregate操作符对集合值执行自定义聚合运算.例如,需要列出所有产品类别清单,每个类别名称之间用顿号连接.以下的代码演示了这一

集合(下)

1.Queue接口Queue接口是Collection接口的子接口.Queue接口表示一个队列,分为队头与队尾.通常实现先进 先出的原则( FIFO),但这不是必须的.例如,PriorityQueue是根据优先级来进行排序的.队列会根据具体的实现来组织与管理新加入元素的位置.无论 哪种实现方式,删除(获取)元素时,会删除(获取)队 列头部的元素. package day15; import java.util.LinkedList; import java.util.Queue; /* * Qu

知识点汇总

C#语言新特性 自动属性 下面两种写法作用相同.前者属于自动属性.在使用自动属性时应该注意:get和set访问器不能有具体的实现. 可空类型(可以为空的值类型) 对于值类型而言,C#规定:在定义变量的同时必须要对其赋初值,否则可能无法通过编译器的编译.但是在某些情况下,用户事先是不知道变量的初始值是多少的.因为可以为空的值类型就显得很重要. 值类型包括:int\double\float\decimal\bool\char 可为空的语法为:Nullable<T>,其中T指代上面具体的某种值类型

LINQ标准查询操作符详解(转)

 一. 关于LINQ       LINQ 英文全称是“Language-Integrated Query”,中文为“语言集成查询”,它是微软首席架构师.Delphi 之父和C# 之父——Anders Hejlsberg 提出的并由其团队着力打造的一组用于c#和Visual Basic语言的扩展,为 C# 和 Visual Basic 语言语法提供强大的查询功能.微软从2003年开始启动LINQ的开发,在VisualStudio2008中开始加入LINQ功能. LINQ提供的便利: 1)使用一种

Linq常用查询运算符

Linq一共包含五十几个查询运算符,常用的根据类型来区分一共有5类左右,这五类里面一些事在项目查询中经常用到的.不过linq运算符的命名十分规范,基本从字面意思就能猜测出来是干嘛用的,下面我们挑选一些常用的来介绍一下.根据分类我们能分成下面4种类型: 1.返回IEnumerable<T>类型的 1.1 Where:主要用于对于序列的筛选,跟在sql中对数据筛选用法是一样的 1 int[] array = { 1, 3, 5, 7, 2 }; 2 var query = array.Where(

C#编程(六十二)---------LINQ标准的查询操作符

LINQ标准的查询操作符 首先我们来看一下LINQ的操作符,可根据查询操作符的操作"类型"进行分类,如把它们分成投影,限制,排序,联接,分组,串联,聚合,集合,生成,转换,元素,相等,量词,分割等. 类型 操作符名称 投影操作符 Select,SelectMany 限制操作符 Where 排序操作符 OrderBy,OrderByDescending,ThenBy,ThenByDescending,Reverse 联接操作符 Join,GroupJoin 分组操作符 GroupBy 串

Linq to Object 的简单使用示例

语言集成查询 (LINQ) 是 Visual Studio 2008 中引入的一组功能,可为 C# 和 Visual Basic 语言语法提供强大的查询功能. LINQ 引入了标准易学的数据查询和更新模式,可以扩展该方法来支持任何类型的数据存储. Visual Studio 包括 LINQ 提供程序集,后者支持将 LINQ 与 .NET Framework 集合.SQL Server 数据库.ADO.NET 数据集和 XML 文档结合使用. LINQ特有的编程结构: 隐式类型本地变量:C#的va

初识Linq to Entity

背景:C# .Net MVC ,以及已经开发了近1年半的我,做了好久但是对于这个技术没有总结,这是一个机会,写写我理解的东西吧. 技术介绍: LINQ(Language Integrated Query,语言集成查询)是一组用于C#和VB.NET语言的扩展,它允许编写C#或者VB.net代码,以与查询数据库相同的方式操作内存数据.LINQ提供了丰富的类似SQL的查询语法,功能强大且容易上手.下图汇总展示了LINQ技术的官方实现集合: 正如上图所示,LINQ to Entities 是LINQ技术

Entity Framework技术系列之7:LINQ to Entities

小分享:我有几张阿里云优惠券,用券购买或者升级阿里云相应产品最多可以优惠五折!领券地址:https://promotion.aliyun.com/ntms/act/ambassador/sharetouser.html?userCode=ohmepe03 前言 LINQ(Language Integrated Query,语言集成查询)是一组用于C#和VB.NET语言的扩展,它允许编写C#或者VB.NET代码,以与查询数据库相同的方式操作内存数据.LINQ提Entity Framework技术系