zoukankan      html  css  js  c++  java
  • 对于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.   
    6. namespace ConsoleAppList  
    7. {  
    8.     class Program  
    9.     {  
    10.         static void Main(string[] args)  
    11.         {  
    12.             string[] stuName = { "AAAA", "BBBB", "CCCC"};  
    13.             List<string> li = new List<string>(stuName);  
    14.   
    15.             Console.WriteLine("合并另一个集合:");  
    16.             li.AddRange(li);  
    17.             foreach (string name in li)  
    18.             {  
    19.                 Console.WriteLine(name);  
    20.             }  
    21.   
    22.             Console.WriteLine("/r/n删除操作(指定索引位置,删除个数):");  
    23.             li.RemoveRange(2, 2);  
    24.             foreach (string name in li)  
    25.             {  
    26.                 Console.WriteLine(name);  
    27.             }  
    28.   
    29.             Console.WriteLine("/r/n指定索引位置,插入另一个集合:");  
    30.             stuName = new string[] {"张三","李四","王五"};  
    31.   
    32.             li.InsertRange(3, stuName);  
    33.             //选择要插入的集合指定范围  
    34.             //li.InsertRange(3, new List<string>(stuName).GetRange(1, 2));  
    35.   
    36.             foreach (string name in li)  
    37.             {  
    38.                 Console.WriteLine(name);  
    39.             }  
    40.   
    41.             Console.WriteLine("/r/n显示指定索引范围的数据:");  
    42.             string[] output = li.GetRange(2, 3).ToArray();  
    43.             //List<string> output = li.GetRange(2, 3);  
    44.             foreach (string name in output)  
    45.             {  
    46.                 Console.WriteLine(name);  
    47.             }  
    48.         }  
    49.     }  
    50. }  

    运行结果:

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

    运行结果:

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

    是否存在男生的学生:True

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

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

    所有学生的平均年龄:24.67

    所有学生的总龄:74

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

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

  • 相关阅读:
    jenkins构建完成后,执行的命令行的东西也会自动结束的解决办法
    解决ansible上传速度慢的问题
    uniq的坑坑
    tomcat问题
    R语言入门:对于boxplot()箱型图的直观理解
    R语言入门:条形图barplot()的绘制
    R语言入门:数据框的创建和访问
    Python当中的命令行参数sys.argv[]的使用方法
    R语言清除单个变量和全部变量
    linux下添加环境变量
  • 原文地址:https://www.cnblogs.com/jliuwork/p/4022830.html
Copyright © 2011-2022 走看看