110,587
社区成员
发帖
与我相关
我的任务
分享
void Main()
{
DataTable dt=new DataTable();
dt.Columns.Add("UsedDay",typeof(int));
dt.Columns.Add("MTID",typeof(int));
dt.Columns.Add("maxDate");
dt.Columns.Add("TMoney",typeof(int));
dt.Rows.Add(1,1,"2011-07-04 10:35:29.330",12);
dt.Rows.Add(3,1,"2011-07-05 09:46:38.277",108);
dt.Rows.Add(5,1,"2011-07-05 09:46:04.793",60);
dt.Rows.Add(30,1,"2011-07-05 09:46:04.793",204);
dt.Rows.Add(90,1,"2011-07-05 09:46:13.590",612);
dt.Rows.Add(365,1,"2011-07-04 18:53:16.650",568);
dt.Rows.Add(730,1,"2011-07-04 18:52:57.903",1136);
dt.Rows.Add(1095,1,"2011-07-04 18:52:05.623",1704);
dt.Rows.Add(1460,1,"2011-06-30 09:28:16.220",0);
dt.Rows.Add(3,2,"2011-07-05 09:47:57.123",36);
dt.Rows.Add(5,2,"22011-07-05 09:48:07.470",60);
dt.Rows.Add(30,2,"2011-07-05 09:47:50.850",68);
dt.Rows.Add(1095,2,"2011-07-01 17:05:25.810",1704);
var query=from r in dt.AsEnumerable()
let temp=r.Field<int>("UsedDay")<30?1:r.Field<int>("UsedDay")%30==0?30:r.Field<int>("UsedDay")%365==0?365:1
group r by new {UsedDay=temp,MTID=r.Field<int>("MTID")} into g
select new
{
UsedDay=g.Key.UsedDay,
MTID=g.Key.MTID,
maxDate=g.FirstOrDefault().Field<string>("maxDate"),
TMoney=g.Sum(t=>t.Field<int>("TMoney")),
Count=g.Count()
};
Console.WriteLine("UsedDay\tMTID\t\tmaxDate\t\tTMoney\tCount");
query.ToList().ForEach(q=>Console.WriteLine("{0}\t{1}\t{2}\t{3}\t{4}",q.UsedDay,q.MTID,q.maxDate,q.TMoney,q.Count));
/*
UsedDay MTID maxDate TMoney Count
1 1 2011-07-04 10:35:29.330 180 3
30 1 2011-07-05 09:46:04.793 816 2
365 1 2011-07-04 18:53:16.650 3408 4
1 2 2011-07-05 09:47:57.123 96 2
30 2 2011-07-05 09:47:50.850 68 1
365 2 2011-07-01 17:05:25.810 1704 1
*/
}