Pandora Pocket

IT系と日常系の備忘録。三日坊主。

たまに使おうと思って度忘れしているのでメモ。

LINQを使ってデータを抽出する際にWHERE句を用いますが、同じデータソースに対してWHERE句の中身だけが異なるなんてことがあるかと思います。

それぞれメソッドを分けると冗長ですので、WHERE句だけ外部から渡したい。

こういう時はDelegateを使えば外部からラムダ式を渡せます。

ex)

var numbers = new List<int> { 1, 2, 3, 4, 5, 6, 7, 8, 9 };

Func<int, bool> filter = f => (f % 2 == 0) && (f > 5);

var result = numbers.Where(filter);

参考

I can define a delegate and write the query like this. Func<string, bool> filter = s => s.Length == 5; IEnumerable<string> query = names.Where(filter) ...
[はてなブックマークで表示]

はじめに 引数にラムダ式を渡す ラムダ式の型はFuncとActionが用意されている ラムダ式はデリゲートを作るためのもの  このような記述や説明をしているC#関連のブログをたまに見かけます。実はこれらは正確には違ったり、...
[はてなブックマークで表示]