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#関連のブログをたまに見かけます。実はこ…
[はてなブックマークで表示]