2016-03-25 9 views
0

私はID、名前、年齢のようなプロパティを含むリストを持っています。 Linqでは、.Select(x => x.Name、x.Age) で1つまたは複数のプロパティを選択でき、これらのプロパティのみを持つEnumeratbleを取得できます。linq select insideメソッドを使用して

今、私はこれを行うにはメソッドの中から選択する必要があります。関数を使用しようとしましたが、メソッドを開くのに問題があります:

void myMethod<T,TSelection>(List<T> Persons, Func<T, TSelection> index) { 

var Index = list.Select(index); 
... 
    } 

このメソッドを開くにはどうしたらいいですか?私はそのようなことを考えた:

myMethod(list,(list, t => t.Age)) 

答えて

0

だけで2番目の引数としてラムダを渡す:ランタイムがFuncパラメータと互換性のデリゲートにあなたのラムダを強要されます

myMethod(list, t => t.Age) 

。コンパイラがあなたの型を理解できない場合は、ラムダの型を指定する必要があります。戻り値の型としてジェネリック型パラメータを使用している場合は、通常は問題になります。この場合は問題ありません。

元のタイプの新しいインスタンスを選択せず​​に複数のプロパティを選択する場合は、新しい匿名オブジェクト(new { }など)を選択します。ラムダ内で気になる物件を選ぶことができます:

myMethod(list, t => new { t.Age, t.Name }); 
+0

"リスト、..."の部分はありません。しかし、どのように多くのプロパティを選択できますか? –

+0

元のコードで表示する構文は、複数のプロパティを選択するために正しくありません。私はあなたが匿名のオブジェクトであることを信じています。私はその答えをどのように投影するのかを示す答えを編集しました。 –

関連する問題