我正在尝试使用从LINQ 检索到QueryResultViewModel
的对象列表中调用的类来包装查询的结果。dynamic
它们包含一个名为 的整数字段Worked
。我不应该使用非动态类型,因为根据查询它还有其他字段。我试过了:
var query = new HoursQuery( .. parameters .. );
this.Result = new ObservableCollection<QueryResultViewModel>(
query.Execute().Select( x => new QueryResultViewModel( x.Worked )));
但我得到“'object'不包含'Worked'的定义”,我不知道是否可以在不更改查询返回类型的情况下修复它。
执行代码也可能有用:
var res = some_list.GroupBy(a => new { a.Employee, a.RelatedTask, a.Start.Month })
.Select(g => new { K = g.Key, Worked = g.Sum(s => s.Duration.TotalHours) });
编辑:这很好用,但可能不是很优雅。
public class HQueryDTO
{
public double Worked;
public object K;
}
public IEnumerable<dynamic> Execute()
{
var list = base.Execute();
return res = list.GroupBy(a => new { a.Employee, a.RelatedTask } )
.Select(g => new HQueryDTO { K = g.Key, Worked = g.Sum(s => s.Duration.TotalHours) });
}
现在结果有一个类型,它可以返回动态。