var query = from t in dt.AsEnumerable() group t by new { t1 = t.Field<int>("管径"), t2 = t.Field<string>("材质") } into m select new { t1 = m.Key.t1, t2 = m.Key.t2, t3 = m.Count() };
如上面代码所述,dt为一个已知的DataTable,想要在这个dt中对其中的一些列分组,并且分组完成后只显示分组的列与分组出来的count()数量。
上面的代码运行可以按管径与材质进行分组,并得出统计的数量,但是当我需要分组的列的数量是不定的是由客户来选择的。那么怎样将上述代码改为可以动态改变列的数量呢??
在网上查到有两种方法:用Dynamic.cs 和 使用Expression构建 表达式目录树,但是还是没看懂,希望大虾们指点下,最好有代码可以参考下。 拜谢。
还是使用sql拼接吧,你这个用linq性能不知道怎么样。
http://blogs.msdn.com/b/mitsu/archive/2008/02/07/linq-groupbymany-dynamically.aspx
@Tom.汤: 大哥可以说下上面网页中的思路么?我今天找类似那种方法找到好多,但是里面的方法太多没看懂怎么用。
好吧,看来是没人知道。