private void button1_Click(object sender, EventArgs e)
{
DataTable dt = new DataTable();
dt.Columns.AddRange(new DataColumn[] { new DataColumn("name", typeof(string)),
new DataColumn("sex", typeof(string)),
new DataColumn("score", typeof(int)) });
dt.Rows.Add(new object[] { "张三", "男", 1 });
dt.Rows.Add(new object[] { "张三", "男", 4 });
dt.Rows.Add(new object[] { "李四", "男", 100 });
dt.Rows.Add(new object[] { "李四", "女", 90 });
dt.Rows.Add(new object[] { "王五", "女", 77 });
var query = from t in dt.AsEnumerable()
group t by new { t1 = t.Field<string>("name"), t2 = t.Field<string>("sex") } into m
where m.Count() >1
select new
{
name = m.Key.t1,
sex = m.Key.t2,
score = m.Sum(n => n.Field<int>("score"))
};
if (query.ToList().Count > 0)
{
query.ToList().ForEach(q =>
{
MessageBox.Show(q.name + "," + q.sex + "," + q.score);
});
}
dt.AsEnumerable().GroupBy(p => new { t1 = p.Field<string>("name"), t2 = p.Field<string>("sex") }).Where(p => p.Count() > 1)
.Select(s => new { name = s.Key.t1, sex = s.Key.t2, score = s.Sum(ss => ss.Field<int>("score")) }).ToList()
.ForEach(sss => {
MessageBox.Show(sss.name + "," + sss.sex + "," +sss.score);
});
}
Private Sub Label18_Click(sender As Object, e As EventArgs) Handles Label18.Click
Dim dt As New DataTable()
dt.Columns.AddRange(New DataColumn() {New DataColumn("name", GetType(String)), New DataColumn("sex", GetType(String)), New DataColumn("score", GetType(Integer))})
dt.Rows.Add(New Object() {"张三", "男", 1})
dt.Rows.Add(New Object() {"张三", "男", 4})
dt.Rows.Add(New Object() {"李四", "男", 100})
dt.Rows.Add(New Object() {"李四", "女", 90})
dt.Rows.Add(New Object() {"王五", "女", 77})
dt.AsEnumerable().GroupBy(Function(p) New With {
Key .t1 = p.Field(Of String)("name"),
Key .t2 = p.Field(Of String)("sex")
}).Where(Function(p) p.Count() > 1).[Select](Function(s) New With {
Key .name = s.Key.t1,
Key .sex = s.Key.t2,
Key .score = s.Sum(Function(ss) ss.Field(Of Integer)("score"))
}).ToList().ForEach(Function(sss)
MessageBox.Show(sss.name + "," + sss.sex + "," + sss.score.ToString)
End Function)
End Sub