我有一个简单的Linq查询:
var retVal = readModel
.GroupBy(x => x.Service)
.Select(
grp => new GroupView
{
GroupName = grp.Key,
GroupItems = grp.Sum(k => k.NumberOfItems)
}
);
retVal
是IQueryable<GroupView>
。到目前为止一切顺利,我要做的是使这个查询动态化,这样用户就可以使用自定义分组策略了。
这是我的第一次尝试:
var retVal = readModel
.GroupBy("Service", "it")
.Select("it.key");
这给了我一个包含group名称的字符串数组。这很好,但我想要实现的结果是相当远的,因为我有两个未提出的问题:
GroupView
模型答案 0 :(得分:0)
事情是DynamicLinq不允许它简单。
如果要扩展DynamicLinq库以返回强类型结果,可以检查this answer。
但如果你不想要它,这是一个简单的解决方案:
//select your grouped results
var retVal = readModel
.GroupBy("Service", "it")
.Select("new (it.key as GroupName, Sum(it.NumberOfItems) as GroupItems)");
//Map them
var res = ((IEnumerable<dynamic>)retVal)
.Select(x => new GroupView
{
GroupName = x.GroupName,
GroupItems = x.GroupItems
});