さまざまな条件でフィルタリングしたい辞書があります。
IDictionary<string, string> result = collection.Where(r => r.Value == null).ToDictionary(r => r.Key, r => r.Value);
Where 句をパラメーターとして、実際のフィルタリングを実行するメソッドに渡したいと思います。
private static IDictionary<T1, T2> Filter<T1, T2>(Func<IDictionary<T1, T2>, IDictionary<T1, T2>> exp, IDictionary<T1, T2> col)
{
return col.Where(exp).ToDictionary<T1, T2>(r => r.Key, r => r.Value);
}
ただし、これはコンパイルされません。
を使用してこのメソッドを呼び出そうとしました
Func<IDictionary<string, string>, IDictionary<string, string>> expression = r => r.Value == null;
var result = Filter<string, string>(expression, collection);
私は何を間違っていますか?