クエリの結果を、 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) });
}
結果に型が設定されたので、動的に返すことができます。