2017-06-20 46 views
1

考虑,我们有这个类是用于汇总报告的新对象:动态的LINQ:选择已知类型

public class ReportSeriesData 
{ 
    public string Title { get; set; } 
    public double Value { get; set; } 

    public ReportSeriesData() 
    { 

    } 

    public ReportSeriesData(string Title, double Value) 
    { 

    } 
} 

我用Dynamic Linq到组记录,然后我想选择的结果进名单ReportSeriesData

var reportData = list.AsQueryable().GroupBy(UserSelectedField, "it").Select("new (it.Key as Title, it.Count() as Value) as ReportSeriesData"); 

上面的语句产生一个错误:

类型System.Linq的的“异常。 Dynamic.ParseException”发生在 System.Linq.Dynamic.dll但在用户代码中没有处理

其他信息:语法错误

什么是选择在动态LINQ已知类型的对象的正确方法?

+0

只知道,你为什么要使用动态的LINQ,而不是 “经典” 的LINQ?在Linq中,这种查询很容易编写 - 也许你甚至可以混合使用它们。 – gobes

+0

@gobes我使用动态Linq,因为我希望能够在运行时选择一个字段进行分组,而且源数据的类型也是在运行时生成的,所以我不能使用经典的linq – jekcom

回答

-1

你可以做到这一点

var reportData = from instance in list 
group instance by instance.UserSelectedField into group 
select new ReportSeriesData() with {.Title = group.Key,.Value = group.Count} 

var reportData=list.AsQueryable().GroupBy(UserSelectedField, "it").Select(g => new ReportSeriesData() 
    { 
     Title= g.Key, 
     Value= g.Count 
    }