エンティティ コレクションに適用するさまざまな数の「フィルター」があり、これらのフィルターはリストに格納されます。現在、私は次のことを行っています。
IQueryable<Items> items = SharedContext.Context.Items.GetAll();
//This list is dynamic, but shown static here for simplicity
IEnumerable<Items> filterList = new List<string>(){"new", "old", "current"};
IEnumerable<Item> items_temp = new List<Item>();
foreach (string type in filterList)
{
var temp = items.Where(i => i.Type.ToLower().Trim() == type.ToLower().Trim());
items_temp = items_temp.Union(temp);
}
items = items_temp.AsQueryable();
残念ながら、これは大きなパフォーマンスの問題を引き起こします。私はそこに誰かがより良い解決策を持っていることを知っています.あなたはどう思いますか?
EDIT
上記のコードでアプリケーションを実行すると、実行に約30秒かかりますが、次の場合:
items.Where(item => item.Type.ToLower().Trim() == "new" ||
item.Type.ToLower().Trim() == "old" ||
item.Type.ToLower().Trim() == "current");
私のアプリケーションは約 4 秒で実行されます。誰かがこのパフォーマンスに匹敵するソリューションを考え出すことができますか、または少なくとも結果がそれほど劇的に異なる理由について私に記入してもらえますか? 参考までに、複数のグリッドがネストされたグリッドにデータをバインドしています...小さな改善が大いに役立ちます。