動的クエリで汎用リストをフィルタリングする必要があるとしましょう(List<string> l; var x = l.Where(*dynamic query*)
)
LINQを使用してこれを行うにはどうすればよいですか?(現在、データビューで行フィルターを使用しています)
scott gによる投稿を見ましたが、 IEnumerable
(一般的なリストを含む)を使用するオブジェクトでは機能しないようです。
誰かが何かアイデアを提供できますか?
動的クエリで汎用リストをフィルタリングする必要があるとしましょう(List<string> l; var x = l.Where(*dynamic query*)
)
LINQを使用してこれを行うにはどうすればよいですか?(現在、データビューで行フィルターを使用しています)
scott gによる投稿を見ましたが、 IEnumerable
(一般的なリストを含む)を使用するオブジェクトでは機能しないようです。
誰かが何かアイデアを提供できますか?
文字列ベースのクエリを意味すると仮定すると、動的 LINQ ライブラリは正常に機能します。.AsQueryable()
最初に電話してください:
string s = *dynamic query*
var qry = l.AsQueryable().Where(s);
これによりIQueryable<T>
、動的な LINQ 拡張メソッドへのアクセスを提供するリストのラッパーが提供されます。
述語をとるFindAll()メソッドを使用できます。これが基本的な例です。
List<string> stringList = new List<string>(new string[]{"Smith", "Johnson", "Jordan","Doe"});
List<string> filteredStringList = stringList.FindAll(x => x == "Smith");
また、Findメソッドは単一のアイテムを返します。
IEnumerableとIQueryableの両方で動的LINQクエリを実行するためのサンプルプロジェクトもMSDNにあります。そこからDynamicQueryableクラスを再利用できます。ここにリンクがあります。プロジェクトはC#サンプルプロジェクト内にあります。