我试图用 LINQ 检索的 < code> 动力 code > 对象列表中名为 < code_ heryResultViewModel code > 的类来包抄查询结果。 这些查询包含一个叫做 < code> Worked code > 的整数字段。 我不应该使用非动态类型, 因为它有其它字段。 我尝试过 :
var query = new HoursQuery( .. parameters .. );
this.Result = new ObservableCollection<QueryResultViewModel>(
query.Execute().Select( x => new QueryResultViewModel( x.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) });
强势EDIT 强势 > :效果很好,但也许不太优雅。
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) });
}
当结果有类型时, 可以返回动态 。