私はこれから始めています:
query
.Take(20)
.Select(item => new
{
id = item.SomeField,
value = item.AnotherField
})
.AsEnumerable()
.ToDictionary(item => item.id, item => item.value);
ここで、 と を除くすべてを再利用したいと思いSomeField
ますAnotherField
。
public static Dictionary<int, string> ReusableMethod<T>(
this IQueryable<T> query,
Func<T, int> key,
Func<T, string> value)
{
return query
.Take(20)
.Select(item => new
{
id = key(item),
value = value(item)
})
.AsEnumerable()
.ToDictionary(item => item.id, item => item.value);
}
query.ReusableMethod(item => item.SomeField, item => item.AnotherField);
これは機能しますが、DB クエリは必要以上のデータを選択するため、ReusableMethod
linq-to-objects を使用していると思います。
必要なデータのみを選択しながらこれを行うことは可能ですか? Func<> はまだ私にとって魔法の一部であることを付け加えます。そのため、明らかな何かが欠けている可能性があります。
混乱を避けるための明確化Take(20)
:は問題ありませんが、そうでSelect()
はありません。