博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
集合的筛选
阅读量:5965 次
发布时间:2019-06-19

本文共 1303 字,大约阅读时间需要 4 分钟。

经常在项目中遇到要删除集合中某些元素,而用foreach遍历集合时,不能在遍历集合时直接移除要移除的元素,

在这里总结了集合筛选的方法:

static void Main(string[] args){ List
personList = new List
{ new Person{Name="张三",Gender="男",Age=19}, new Person{Name="李四",Gender="男",Age=34}, new Person{Name="春丽",Gender="女",Age=20}, new Person{Name="老王",Gender="男",Age=37}, new Person{Name="小红",Gender="女",Age=18}, };//移除年龄大于25,且性别为男的person//方法一:linq 扩展方法where()//personList = personList.Where(p=>p.Gender=="男"&&p.Age>25).ToList();#region 方法二:遍历集合找到所有要移除的元素,装到一个临时集合里,然后取两个集合的差集List
personList2 = new List
();foreach (Person p in personList){ if (p.Gender == "男"&&p.Age >25) { personList2.Add(p);//装到临时集合里 }}//取两个集合的差集personList = personList.Except(personList2).ToList();//因为是延迟查询,所有ToList()一下赋值给原集合,原集合即为筛选后的集合//输出foreach (Person p in personList){ Console.WriteLine(p.Name+" "+p.Gender+" "+p.Age);}Console.ReadKey();}}#endregion

 

public class Person{private string namr;public string Name{get { return namr; }set { namr = value; }}private string gender;public string Gender{get { return gender; }set { gender = value; }}private int age;public int Age{get { return age; }set { age = value; }}}

 

总结:推荐第一种写法:扩展方法(lambda表达式),代码简洁,一气呵成。

转载于:https://www.cnblogs.com/527289276qq/p/4331000.html

你可能感兴趣的文章
linux tcp中time_wait
查看>>
shuff打乱排序
查看>>
LC.155. Min Stack(非优化,两个stack 同步 + -)
查看>>
Add Two Numbers
查看>>
Asp.net技巧:gridview获取当前行索引的方法
查看>>
让 vim 在按ESC时自动保存
查看>>
git配置别名
查看>>
SpringMVC配置文件
查看>>
划分数系列问题
查看>>
springboot整合jersey
查看>>
Hibernate实体对象的生命周期(三种状态)
查看>>
23. Merge k Sorted Lists
查看>>
Python:pygame游戏编程之旅七(pygame基础知识讲解1)
查看>>
java B转换KB MB GB TB PB EB ZB
查看>>
通过SharpZipLib实现文件夹压缩以及解压
查看>>
20145209预备作业02
查看>>
精通CSS滤镜(filter)
查看>>
弄清楚高层到底是什么情况!
查看>>
开发中常用正则表达式
查看>>
HDU 4374 One hundred layer(单调队列DP)
查看>>