C#学习之List的select、where和group by

系列文章目录

第四章 C#学习之List的select、where和group by

文章目录

  • 系列文章目录
  • 一、list.Select()
  • 二、list.Where()
  • 三、list.GroupBy()

一、list.Select()

List.Select(x=> new{x.name,x.age}).ToList();

集合中只有name和age两列

二、list.Where()

目标:从studentList中查询符合条件的对象,Student中有个ClassName字段,需要从studentList中查询ClassName为“高一(3)班”的所有学生,
一般是这样做的:

foreach(Student student in studentList)
{
  if(student.ClassName=="高一(3)班")
    {
      newList.Add(student);
      continue;
      }
}

但这种方法比较笨重,请看如下的方法。

Var newList = studentList.Where(s=>s.ClassName=="高一(3)班").ToList();
List.Where()用于筛选数据
List.Select()用于选择数据

三、list.GroupBy()

List也可以和数据表DataTable 一样按照对象的属性进行分组。

首先先创建一个实体类 Goods 如下:

   public class Goods
    {
        /// 
        /// 商品编码
        /// 
        public string No { get; set; }
 
        /// 
        /// 商品名称
        /// 
        public string GoodsName { get; set; }
 
        /// 
        /// 价格
        /// 
        public decimal Price { get; set; }
 
        /// 
        /// 类别
        /// 
        public string Category { get; set; }
    }

使用GroupBy对List进行分组代码如下:

    static void Main(string[] args)
    {
       //声明一个List集合
        List<Goods> listGoods = new List<Goods>();
        //造一些数据
        for (int i = 0; i < 10; i++)
        {
            if (i < 3)
            {
                listGoods.Add(new Goods() { No = "100" + i, GoodsName = "商品" + i, Price = 12, Category = "图书" });
            }
            else if (i >= 3 && i < 6)
            {
                listGoods.Add(new Goods() { No = "100" + i, GoodsName = "商品" + i, Price = 12, Category = "母婴" });
            }
            else
            {
                listGoods.Add(new Goods() { No = "100" + i, GoodsName = "商品" + i, Price = 12, Category = "手机" });
            }
        }
        //按照类别 Category 分组
        List<IGrouping<string, Goods>> fenzu = listGoods.GroupBy(p => p.Category).ToList();
        foreach (IGrouping<string, Goods> item in fenzu)
        {
            string strGrouping = item.Key;
            Console.WriteLine($"=====小组[{strGrouping}]开始输出=======");
            List<Goods> templist = item.ToList<Goods>();
            foreach (var subitem in templist)
            {
                Console.WriteLine($"商品编号【{subitem.No}】,商品名称【{subitem.GoodsName}】,商品类别【{subitem.Category}】");
            }
            Console.WriteLine($"=====小组[{strGrouping}]结束输出=======");
        }
        //停留
        Console.ReadLine();
     }

最后执行结果如图

C#学习之List的select、where和group by_第1张图片

你可能感兴趣的:(C#学习,c#,学习,list)