Linq中具有动态多个字段的GroupBy

nbnkbykc  于 2022-12-06  发布在  其他
关注(0)|答案(2)|浏览(192)

我有一个Datatable结果。我想用一些字段分组,可能是一个、两个或三个。主要的事实是开发人员无法知道客户端想要分组的字段数。因此,对于这种情况,我找到了一些关于将List参数放入group by字段的解决方案。但是还没有找到合适的。有人能帮我吗?我被这个问题困了三天。

cyvaqqii

cyvaqqii1#

使用反射对DB行进行动态分组:

//something like:
var props = typeof(Foo).GetProperties().Where( x=> x.Name.Equals("MyField");
var result = rows.GroupBy( x => prop.GetValue( x ) );

对于多个字段,循环遍历它们并将GroupBy应用于最后一次迭代的结果。

wrrgggsh

wrrgggsh2#

我是通过使用动态LinQ中的groupby得到的。

var qfields = string.Join(",", stringarray.Select(x => "it[\"" + x + "\"] as " + x));

  var collVal = datatableresult.AsQueryable()
                               .GroupBy("new (" + qfields + ")", "it")
                               .Select("new (it.Key as Key,it as Data)");

这段代码成功地通过了数据表分组,但我仍然需要对多个列进行排序。

相关问题