分组求和 DataTable dt=new DataTable(); IEnumerable<DataRow> query =from t in dt.AsEnumerable() group t by t.Field<int>("id") into s select new { sum=s.Sum(m=>m.Field<int>("age")), s.Key };
void Main() { int groupNum=3; //平均分成3组 var list=Enumerable.Repeat("A",10); list=list.Concat(Enumerable.Repeat("B",20)); list=list.Concat(Enumerable.Repeat("C",30)); list=list.Concat(Enumerable.Repeat("D",40)); list=list.OrderBy(l=>Guid.NewGuid()); int avgNum=(int)list.Count()/3; var result=new List<List<string>>(); for(int i=0;i<groupNum;i++) { if(i+1==groupNum) { result.Add(list.Skip(avgNum*i).ToList()); } else { result.Add(list.Skip(avgNum*i).Take(avgNum).ToList()); } } for(int i=0;i<result.Count;i++) { Console.WriteLine("第 "+(i+1)+"组: 共计"+result[i].Count+"个"); result[i].ForEach(r=>Console.WriteLine(r)); Console.WriteLine("************"); }
/* 第 1组: 共计33个 C A B D C C B C A C D C B D C C C A D B C D D C B C D D C D B C D ************ 第 2组: 共计33个 D B D B C D A C D D C C B C D C C B A C B C D B C B D B A A D D A ************ 第 3组: 共计34个 B D A B C D B D C B C C C D B C C C A D A D C D D B D D C B A A B B ************ */ }
DataTable dt=new DataTable();
IEnumerable<DataRow> query =from t in dt.AsEnumerable()
group t by t.Field<int>("id")
into s
select new
{
sum=s.Sum(m=>m.Field<int>("age")),
s.Key
};
{
int groupNum=3; //平均分成3组
var list=Enumerable.Repeat("A",10);
list=list.Concat(Enumerable.Repeat("B",20));
list=list.Concat(Enumerable.Repeat("C",30));
list=list.Concat(Enumerable.Repeat("D",40));
list=list.OrderBy(l=>Guid.NewGuid());
int avgNum=(int)list.Count()/3;
var result=new List<List<string>>();
for(int i=0;i<groupNum;i++)
{
if(i+1==groupNum)
{
result.Add(list.Skip(avgNum*i).ToList());
}
else
{
result.Add(list.Skip(avgNum*i).Take(avgNum).ToList());
}
}
for(int i=0;i<result.Count;i++)
{
Console.WriteLine("第 "+(i+1)+"组: 共计"+result[i].Count+"个");
result[i].ForEach(r=>Console.WriteLine(r));
Console.WriteLine("************");
}
/*
第 1组: 共计33个
C
A
B
D
C
C
B
C
A
C
D
C
B
D
C
C
C
A
D
B
C
D
D
C
B
C
D
D
C
D
B
C
D
************
第 2组: 共计33个
D
B
D
B
C
D
A
C
D
D
C
C
B
C
D
C
C
B
A
C
B
C
D
B
C
B
D
B
A
A
D
D
A
************
第 3组: 共计34个
B
D
A
B
C
D
B
D
C
B
C
C
C
D
B
C
C
C
A
D
A
D
C
D
D
B
D
D
C
B
A
A
B
B
************ */
}