繁体   English   中英

动态Linq选择复杂对象

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM