DateSet 记录分组排序并过滤的问题
表1,名为:Table1
字段1,字段2,字段3
aa,bb,6
aa,bb,6.5
aa,bb,5
cc,dd,7
cc,dd,6
ee,ff,9
字段1与字段2都相等的情况 取字段3最大的
结果:
aa,bb,6.5
cc,dd,7
ee,ff,9
有什么好的办法可以快速实现
------解决方案-------------------- C# code
var query= from t in ds.Talbes[0].AsEnumerable()
group t by new {字段1=t.Field<string>("字段1"),字段2=t.Field<string>("字段2")} into g
select new {g.Key.字段1,g.Key.字段2,字段3=g.Max(s=>s.Field<double>("字段3")};
------解决方案-------------------- 本人亲自试过,可以达到你要的效果! select 字段1 ,字段2,max(字段3) from Table1 group by 字段1,字段2
------解决方案-------------------- up 探讨 本人亲自试过,可以达到你要的效果! select 字段1 ,字段2,max(字段3) from Table1 group by 字段1,字段2
------解决方案-------------------- 上面的回答第三个字段没有表头,下面的这个第三个地段有表头 select 字段1 ,字段2,max(字段3) as ’字段3‘ from Table1 group by 字段1,字段2
------解决方案-------------------- 探讨 是用LINQ,不是传统的sql
------解决方案--------------------
DataTable dt = new DataTable(); dt.Columns.Add("字段1",typeof(string)); dt.Columns.Add("字段2", typeof(string)); dt.Columns.Add("字段3", typeof(decimal)); dt.Rows.Add("aa","bb",6); dt.Rows.Add("aa","bb",6.5); dt.Rows.Add("aa","bb",5); dt.Rows.Add("cc","dd",7); dt.Rows.Add("cc","dd",6); dt.Rows.Add("ee", "ff", 9); var source = from temp in dt.AsEnumerable() group temp by new { 字段1 = temp.Field<string>("字段1"), 字段2 = temp.Field<string>("字段2") } into g select new { 字段1 = g.Key.字段1, 字段2 = g.Key.字段2, 字段3 = g.Max(t => t.Field<decimal>("字段3")) }; foreach (var s in source) { Response.Write("<br/>"); Response.Write(s.字段1 + " " + s.字段2 + " " + s.字段3); }