-1
BindingListのカスタムサブクラス<T>は、便利な拡張メソッドを使用してLINQクエリを実行したいです。たとえば、次のようにBindingListのカスタムサブクラスでIEnumerable <T>拡張メソッドにアクセスするにはどうすればいいですか<T>?
public int GetSum(MyList<T> list)
{
return list.Sum(x => x.Value);
}
しかし、コンパイラは、これが動作するためには、それは明らかである、IEnumerable<T>
としてlist
を認識しないので、それがSum
を解決できないと文句を言います:
public int GetSum(MyList<T> list)
{
return ((IEnumerable<T>)list).Sum(x => x.Value);
}
誰もが持っています私は醜いと不必要なキャストを避けることができる賢い方法?
これは...そうでなければなりません...タイプに複数のIEnumerable実装があると思いますか? –
Dan
@ダンあなたの合計(x => x.Value)x.Valueは、この式がすべてのオブジェクトにわたって何かに評価できる能力を削除します。適切に評価するためにValueプロパティが必要な型を指定するようになりました。 Sum拡張メソッドのtype引数に型を指定しない限り、式の評価方法はわかりません。 –