Linq DynamicQuerableコードを使用しています。整数の配列と、除外フィルターとして使用するフィールドを表す文字列があります。
例えば
IQuerable GetItemsWithoutExcluded(IQuerable qry, string primaryKey, List<int> excludedItems) {
// psuedo code
return qry.Where("p=>! p.primaryKey in excludedItems");
}
DynamicQuerableを使用してこれを実現するにはどうすればよいですか?
これは、動的LINQなしで行うことができます。 Dynamic-LINQは、フレームワークの本格的な市民ではありません。そして、このタスクを実行する方法を変更することにより、より効果的なフィルターを使用できます。現在の方法では、除外ごとにメソッドを呼び出す必要があります。
代わりにこのようなものを試してください
List<int> allKeys = new List<int>{1,2,3,4,5,6};
List<int> excluded = new List<int>{ 1, 2, 3 };
var query = from included in allKeys
where !excluded.Contains(included)
select included;
foreach (var item in query)
Console.WriteLine(item);