使用Linq将数据与动态密钥分组

时间:2018-05-30 16:30:13

标签: vb.net linq dynamic group-by

我使用System.Linq.Dynamic将对象列表分组到具有以下代码的对象列表的新分组列表中:

Dim lstGroupedFilterNew = lstDataSource _
                .GroupBy("New (Unit_ID, Itinerary_ID Driver_ID)", "grp") _
                .[Select](Function(grp) grp.ToList()).ToList()

但是我得到错误 lambda表达式无法转换为' string'因为' string'在我的select子句中不是委托类型

1 个答案:

答案 0 :(得分:0)

我选择不使用Linq.Dynamic,我发现了一种验证条件的方法,可以动态地将键添加到我的GroupBy子句中,结果如下:

Dim lstGroupedFilter = (From t In lstDataSource Group t By __groupByKey1__ = _
                          New With {Key .Unit_ID = (If(blnUnit, t.Unit_ID, 0)), Key .Itinerary_ID = If(blnItinerary, t.Itinerary_ID, 0), Key .Driver_ID = If(blnDriver, t.Driver_ID, 0)} _
                          Into g = Group Select g.ToList()).ToList()

这是一个动态添加键并生成类似于此solution的结果的选项。