linq to datatable group by 多列 实现 .

  1. void Main()  
  2. {  
  3. DataTable dt=new DataTable();  
  4. dt.Columns.Add("flightno");  
  5. dt.Columns.Add("flightTime",typeof(DateTime));  
  6. dt.Columns.Add("arrivalTime",typeof(DateTime));  
  7. dt.Columns.Add("passenger");  
  8. dt.Rows.Add("AU123",Convert.ToDateTime("2010-12-20 12:30"),Convert.ToDateTime("2010-12-20 15:30"),"小Q");  
  9. dt.Rows.Add("AU123",Convert.ToDateTime("2010-12-20 12:30"),Convert.ToDateTime("2010-12-20 15:30"),"小T");  
  10. dt.Rows.Add("AU123",Convert.ToDateTime("2010-10-21 12:00"),Convert.ToDateTime("2010-12-21 14:30"),"小N");  
  11. dt.Rows.Add("AU124",Convert.ToDateTime("2010-10-22 12:00"),Convert.ToDateTime("2010-12-22 11:30"),"小F");  
  12.    
  13.     
  14. var query=from t in dt.AsEnumerable()  
  15.           group t by  new{t1=t.Field<DateTime>("flightTime"),t2=t.Field<DateTime>("arrivalTime")} into m  
  16.           select new  
  17.           {  
  18.           flightno=m.First().Field<string>("flightno"),  
  19.           flightTime=m.Key.t1,  
  20.           arrivalTime=m.Key.t2,  
  21.           passenger=string.Join("/",m.Select(n=>n.Field<string>("passenger")).ToArray()),  
  22.           rowcount=m.Count()  
  23.           };  
  24.   Console.WriteLine("==============输出结果:================");  
  25.   Console.WriteLine("flightno     flightTime               arrivalTime              passenger      rowcount" +"/n");  
  26.    
  27.   query.ToList().ForEach(q=>Console.WriteLine(q.flightno+"    "+q.flightTime.ToString("yyyy-MM-dd HH:mm")+"     "+q.arrivalTime.ToString("yyyy-MM-dd HH:mm")+"    "+q.passenger+"                 "+q.rowcount));  
  28.     
  29.   /* 
  30.   ==============输出结果:================ 
  31. flightno     flightTime               arrivalTime      passenger      rowcount 
  32. AU123    2010-12-20 12:30     2010-12-20 15:30    小Q/小T             2 
  33. AU123    2010-10-21 12:00     2010-12-21 14:30    小N                 1 
  34. AU124    2010-10-22 12:00     2010-12-22 11:30    小F                 1 
  35.   */  
  36. }  

转载自http://blog.csdn.net/q107770540/article/details/6086577

posted @ 2012-11-13 11:04  王者杂货铺  阅读(442)  评论(0编辑  收藏  举报