EFコアの動的検索を作成しようとしています。リフレクションでのパフォーマンスの問題
foreach (var i in vm.SearchProperties)
{
if (result == null)
result = db.MyTable.Where(x => x.GetType().GetProperty(i).GetValue(x, null).ToString().ToLower().StartsWith("MySearchString"));
else
result = result.Where(x => x.GetType().GetProperty(i).GetValue(x,null).ToString().ToLower().StartsWith(i.Suchfeld.ToLower(“mySearchString”)));
}
私は反射部分を追加する前にかなり速く動作します。すぐに私はそれにリフレクションを追加しましたが、それは1000倍の速度で減速しました。どのように私がそれを得るかどのようなアイデアは、反射部分の周りをスピードアップした。
あなたは "_Before_私は反射部を追加しました" と言うことを意味しましたか? – JLRishe
一部が遅いですか? –
式はLINQ to SQLコンバーターによって複雑に解釈されるため、テーブルのすべての項目でコンパイルおよび実行されます。検索したいプロパティに基づいて式ツリーを構築し、それを 'Expression>'として渡します。 –