zoukankan      html  css  js  c++  java
  • 集合的筛选

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

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

    static void Main(string[] args)
    {
     List<Person> personList = new List<Person>
     {
      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<Person> personList2 = new List<Person>();
    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表达式),代码简洁,一气呵成。

  • 相关阅读:
    Windows7旗舰版安装VS2008的SP1的问题(KB945140, KB947888)
    Hex RGB颜色值互换
    php沥遍目录结构
    linux ftp设置
    Android开发环境搭建
    php读取excel文件
    wordpress插件制作
    wordpress主题制作
    php读取excel文件(OLERead.php页代码)
    php ios推送
  • 原文地址:https://www.cnblogs.com/527289276qq/p/4331000.html
Copyright © 2011-2022 走看看