私は簡単なLinqクエリを持っていました:
var retVal = readModel
.GroupBy(x => x.Service)
.Select(
grp => new GroupView
{
GroupName = grp.Key,
GroupItems = grp.Sum(k => k.NumberOfItems)
}
);
retVal
はIQueryable<GroupView>
でした。これまでのところ、私がやろうとしていることは、このクエリを動的にして、ユーザーがカスタムのグループ化戦略を使用できるようにすることです。
これは私の最初の試みです:
var retVal = readModel
.GroupBy("Service", "it")
.Select("it.key");
そして、これはグループの名前を含む文字列の配列を与えます。これは問題ありませんが、2つの未回答の質問があるので、達成しようとしている結果はかなり遠いです。
GroupView
モデルに変換する方法問題は、DynamicLinqでは単純に許可されないことです。
厳密に型指定された結果を返すようにDynamicLinqライブラリを拡張する場合は、 この回答を確認できます。
しかし、あなたがそれを望まないなら、ここに簡単な解決策があります:
//select your grouped results
var retVal = readModel
.GroupBy("Service", "it")
.Select("new (it.key as GroupName, Sum(it.NumberOfItems) as GroupItems)");
//Map them
var res = ((IEnumerable<dynamic>)retVal)
.Select(x => new GroupView
{
GroupName = x.GroupName,
GroupItems = x.GroupItems
});