0
以下は私がそれをどれぐらい作りましたか? Get関数にFunc<T,string>
の代わりにExpression<Func<T, string>>
をパラメータとして送信する必要がありますが、依然としてSelect()が機能しています。これは簡単に可能ですか?これはLinqPadにフォーマットされています。C#<T>とExpression <Func <T, string>>セレクタをT.Select(セレクタ)にするにはどうすればいいですか?
void Main()
{
// Setup sample data in wholelist
var wholelist = new List<Example>();
for (var a = 0; a < 10; a++)
{ var t = new Example { id = a.ToString(), name = a.ToString() };
wholelist.Add(t);
}
// Do the real work
var names = Get<Example>(wholelist, p => p.name);
// LinqPad shows content
names.Dump();
}
public class Example
{
public string id {get;set;}
public string name {get;set;}
}
public static List<string>
Get<T>(IEnumerable<T> source, Func<T, string> selector)
{
var list = source.Select<T,string>(selector).ToList();
return list;
}
ザ・なぜ我々はすでにExpression<Func<T,string>>
と、このいずれかを呼び出す機能の多くを持っているためです。
ファンタスティック。私はそれが何か簡単でなければならないことを知っていた。 –
うれしいことです。名前を愛して、btw。 このメソッドが頻繁にヒットする場合は、Compileの結果を一時的にキャッシュすることを検討する価値があります。ディスカッション: http://stackoverflow.com/questions/258864/when-an-expressiont-is-compiled-is-it-implicitly-cached –