zoukankan      html  css  js  c++  java
  • Linq DataTable Group By 分组显示人员明细

    实现功能:

         

    多个字段分组源码样例:

    原始数据:

    分组后的输出结果:

    源代码:

     1         public static void PrintPersons()
     2         {
     3             //准备数据
     4             DataTable dt = new DataTable();
     5             dt.Columns.Add(new DataColumn("ID", typeof(int)));
     6             dt.Columns.Add(new DataColumn("UserName", typeof(string)));
     7             dt.Columns.Add(new DataColumn("DeptNo", typeof(string)));
     8             dt.Columns.Add(new DataColumn("DeptName", typeof(string)));
     9             DataRow drTemp = null;
    10             for (int i = 10; i <= 18; i++)
    11             {
    12                 drTemp = dt.NewRow();
    13                 drTemp["ID"] = i;
    14                 drTemp["UserName"] = "姓名" + i.ToString();
    15 
    16                 if (i < 15)
    17                 {
    18                     drTemp["DeptNo"] = "0001";
    19                     drTemp["DeptName"] = "人事部";
    20                 }
    21                 else
    22                 {
    23                     drTemp["DeptNo"] = "0002";
    24                     drTemp["DeptName"] = "生产部";
    25                 }
    26                 dt.Rows.Add(drTemp);
    27             }
    28 
    29             Console.WriteLine("分组前:");
    30             foreach (DataRow row in dt.Rows)
    31             {
    32                 Console.WriteLine(string.Format("{0} {1} {2} {3} ", row.ItemArray));
    33             }
    34             Console.WriteLine("");
    35 
    36             Console.WriteLine("分组后:");
    37 
    38             //Linq分组查询,并按分组显示人员明细
    39             var query = from g in dt.AsEnumerable()
    40                         group g by new { t1 = g.Field<string>("DeptNo"), t2 = g.Field<string>("DeptName") } into companys
    41                         select new { DeptNo = companys.Key.t1, DeptName = companys.Key.t2, StallInfo = companys };
    42 
    43             foreach (var userInfo in query)
    44             {
    45                 System.Collections.Generic.List<DataRow> dataRows = userInfo.StallInfo.ToList();
    46 
    47                 Console.WriteLine(string.Format("{0}({1})人员名单: ", userInfo.DeptName, userInfo.DeptNo));
    48                 foreach (System.Data.DataRow dr in dataRows)
    49                 {
    50                     Console.WriteLine(string.Format("{0} {1} ", dr.ItemArray));
    51                 }
    52             }
    53             Console.ReadLine();
    54         }
  • 相关阅读:
    cnetos7设置中文显示及中文输入法
    大数据、云计算和人工智能
    木马可以做什么
    百度搜索语法
    python知识点
    反向代理&集线器和交换机的区别&广播地址&seq与ack的区别
    转台轴承-YRT转台轴承-机床转台轴承选型浅析
    光栅尺与PLC的配合使用
    STM32 keil printf的使用
    keil编写程序完成后debug前面出现绿色框框
  • 原文地址:https://www.cnblogs.com/slwangzi/p/5961826.html
Copyright © 2011-2022 走看看