我試圖從LINQ檢索的dynamic
對象列表中包裝一個名爲QueryResultViewModel
的類的查詢結果。這些包含一個稱爲Worked
的整數字段。我不應該使用非動態類型,因爲根據查詢它有其他字段。我試過:如何訪問動態類型的字段?
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) });
編輯:這個工作很好,但也許這是不是很優雅。
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) });
}
既然結果有一個類型,它可以返回動態。
沒有。錯誤是運行時試圖訪問工作。我還不能回答我自己的問題,但我用新的信息編輯它。 –