首页 > 其他分享 >IEnumerable 相关操作

IEnumerable 相关操作

时间:2024-12-14 13:21:06浏览次数:13  
标签:salary Name Age IEnumerable new Sex 相关 操作 employees

 1 public class Employee
 2     {
 3         public int EmployeeID { get; set; }
 4         public string Name { get; set; }
 5         public string Sex { get; set; }
 6 
 7         public int Age { get; set; }
 8         public int salary { get; set; }
 9 
10 
11         public override string ToString()
12         {
13             return $"{this.EmployeeID}-{Name}-{ Sex}-{ Age}-{ salary}";
14         }
15 
16 
17     }

1.groupby

 List<Employee> employees = new List<Employee>();

            employees.Add(new Employee { EmployeeID = 100001, Name = "Lily", Age = 25, salary = 3500, Sex = "女" });
            employees.Add(new Employee { EmployeeID = 100002, Name = "lucy", Age = 29, salary = 5500, Sex = "女" });
            employees.Add(new Employee { EmployeeID = 100003, Name = "Jonth", Age = 35, salary = 4500, Sex = "男" });
            employees.Add(new Employee { EmployeeID = 100004, Name = "tom", Age = 38, salary = 3900, Sex = "男" });
            employees.Add(new Employee { EmployeeID = 100005, Name = "jerry", Age = 35, salary = 4700, Sex = "女" });
            employees.Add(new Employee { EmployeeID = 100006, Name = "李四", Age = 44, salary = 7800, Sex = "男" });
            employees.Add(new Employee { EmployeeID = 100007, Name = "王五", Age = 55, salary = 8100, Sex = "男" });
            employees.Add(new Employee { EmployeeID = 100008, Name = "王二", Age = 46, salary = 6700, Sex = "男" });
            IEnumerable<IGrouping<string, Employee>> items = employees.GroupBy(e => e.Sex);
            foreach (IGrouping<string, Employee> g in items)
            {
                Console.WriteLine(g.Key);  //输出排序关键字   
                  foreach(Employee e in g)
                {
                    Console.WriteLine(e); //调用  Employee  toString()方法
                     }



            }
  

输出 :女
100001-Lily-女-25-3500
100002-lucy-女-29-5500
100005-jerry-女-35-4700

100003-Jonth-男-35-4500
100004-tom-男-38-3900
100006-李四-男-44-7800
100007-王五-男-55-8100
100008-王二-男-46-6700

2.映射成新类型

即将原来集合List对象映射,匿名类型或 新类型的 List ,下面将employees 列表中的 Name,Sex,Age,Salary映射到新集合中

IEnumerable<dynamic> list = employees.Where(t => t.salary >= 5000).Select(t =>new   {  xm=t.Name,xb=t.Sex,nl=t.Age,gz=t.salary });

            string s = "";
                foreach (var item in list)
            {

                s = s + item;
            }

输出结果:

{ xm = lucy, xb = 女, nl = 29, gz = 5500 }{ xm = 李四, xb = 男, nl = 44, gz = 7800 }{ xm = 王五, xb = 男, nl = 55, gz = 8100 }{ xm = 王二, xb = 男, nl = 46, gz = 6700 }

 3.分类汇总统计  Groupby

1  var lists=  employees.GroupBy(e => e.Sex).Select(t => new { 性别 = t.Key, 最高工资 = t.Max(e=>e.salary),最低工资=t.Min(e=>e.salary) ,人数=t.Count()});
2             string d = "";
3             foreach (var item in lists)
4             { 
5             d=d + item;
6             }
7 
8             return Content( d);

输出:{ 性别 = 女, 最高工资 = 5500, 最低工资 = 3500, 人数 = 3 }{ 性别 = 男, 最高工资 = 8100, 最低工资 = 3900, 人数 = 5 }

4.自定义MySelect

static class  my{

      public  static IEnumerable<dynamic> MySelect(this IEnumerable<Employee> list, Func<Employee, dynamic> f)
        {
            List<dynamic>ml= new List<dynamic>();
            
            foreach (Employee e in list)
            {
                var t = f(e);
                ml.Add(t);

            }
           
            return ml;
        }

    }
var tlist=    employees.Where(t=>t.Age>35).MySelect(t => new { xb = t.Sex, xm = t.Name, bh = t.EmployeeID,nl=t.Age });
            string m = "";
            foreach (var item in tlist)
            { 
            m=m+item;
            }

  Console.WriteLine(m);

 

标签:salary,Name,Age,IEnumerable,new,Sex,相关,操作,employees
From: https://www.cnblogs.com/sunzzhankui/p/18605718

相关文章

  • 群控系统服务端开发模式-应用开发-获取登录者今天操作日志
    一、后端api开放路由    在根目录下route文件夹下app.php文件中,在perimission的group中添加如下代码:Route::get('member/personal_log','permission.Member/personalLog');//获取个人信息操作接口二、后端api添加方法    在根目录下app文件夹下controlle......
  • Sigrity System Explorer Transient Analysis模式进行瞬态仿真分析操作指导-3个单端信
    SigritySystemExplorerTransientAnalysis模式进行瞬态仿真分析操作指导-3个单端信号串扰分析SigritySystemExplorerTransientAnalysis模式可以用于瞬态仿真分析,通过搭建简易拓扑用于前仿真分析通道的时域性能,下面搭建一个简易的3个单端网络拓扑进行串扰分析,以下图为......
  • Sigrity System Explorer Transient Analysis模式进行瞬态仿真分析操作指导-单端信号-
    SigritySystemExplorerTransientAnalysis模式进行瞬态仿真分析操作指导-单端信号-串联端接SigritySystemExplorerTransientAnalysis模式可以用于瞬态仿真分析,通过搭建简易拓扑用于前仿真分析通道的时域性能,下面搭建一个简易的单端拓扑并且进行串联端接,以下图为例,准备......
  • 【linux下mysql主从复制操作流程】
    linux下mysql主从复制操作流程在Linux下实现MySQL主从复制(Master-SlaveReplication)是一个常见的需求,用于读写分离、数据备份等场景。以下是一个详细的操作流程,包括每个步骤、注意事项以及总结。一、准备环境安装MySQL确保主服务器(Master)和从服务器(Slave)都已经安装了My......
  • 在21世纪的我用C语言探寻世界本质——动态内存管理及相关笔试题
    人无完人,持之以恒,方能见真我!!!共同进步!!文章目录一、为什么有动态内存分配二、malloc和free1.malloc函数的使用2.free函数的使用三、calloc和realloc1.calloc函数的使用2.realloc函数的使用四、常见动态内存分配的错误五、动态内存经典笔试题六、总结C/C++中程序内存区......
  • 2.10、列表操作
    2.10、列表过滤2.10.1、回顾filterletarr=[1,2,3,4,5,6,7,8,9]//filter不会破坏原数组的结构,会生成一个全新的数组。letnewArr=arr.filter((num)=>{//return过滤规则returnnum<5})console.log(newArr)2.10.2、列表过滤watch属性实现<body><......
  • 代码随想录算法训练营第四十五天|LeetCode115.不同的子序列、LeetCode583.两个字符串
    前言打卡代码随想录算法训练营第49期第四十五天ε(*′・∀・`)з゙首先十分推荐学算法的同学可以先了解一下代码随想录,可以在B站卡哥B站账号、代码随想录官方网站代码随想录了解,卡哥清晰易懂的算法教学让我直接果断关注,也十分有缘和第49期的训练营大家庭一起进步。LeetCode115不......
  • Python+OpenCV系列:膨胀和腐蚀——图像形态学操作深度解析
    文章目录什么是膨胀(Dilation)?什么是腐蚀(Erosion)?膨胀和腐蚀如何工作?如何在Python中使用OpenCV实现膨胀和腐蚀?**1.图像膨胀****2.图像腐蚀****3.膨胀与腐蚀的组合使用****调整结构元素****应用场景****总结**在计算机视觉中,图像形态学操作是一类非常重要的图像处理......
  • Go 语言中对 Redis 和 SQL 操作进行单元测试
    在这篇博客文章中,我们将探讨如何在Go语言中使用RedisMock库和SQLMock库进行单元测试。本文将通过一个简单的示例项目展示如何为数据库操作编写单元测试,并确保我们的代码按预期工作。项目结构我们的项目包含以下文件:sql.go:包含数据库操作的实现。sql_test.go:包含数据库......
  • PowerShell 启用 GPU 加速,可以使用以下方法来设置某个程序的 GPU 加速选项。此操作需
    PowerShell启用GPU加速,可以使用以下方法来设置某个程序的GPU加速选项。此操作需要确保已经为程序选择了正确的GPU设置,并且GPU驱动程序已正确安装。使用PowerShell设置程序GPU加速打开PowerShell,并以管理员身份运行。使用Get-ItemProperty和Set-ItemPrope......