[英]Dynamic Linq Select to a complex object
我有一个简单的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");
这给了我一个包含组名的字符串数组。 这很好,但我想要实现的结果是相当远的,因为我有两个未提出的问题:
GroupView
模型 事情是DynamicLinq不允许它简单。
如果要扩展DynamicLinq库以返回强类型结果,可以检查此答案 。
但如果你不想要它,这是一个简单的解决方案:
//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
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.