Entity FrameworkでOrderBy式を動的に作成する方法については、this answerを見てきました。しかし、私は動的なWhere式を構築したいと思います。Where ExpressionをEntity Frameworkで動的に構築するには?
public IEnumerable<InventoryItem> GetAll(string filterBy, object value)
{
var results = new List<InventoryItem>();
using (var db = new InventoryDb())
{
if (QueryHelper.PropertyExists<InventoryItem>(filterBy))
{
var query = db.rri_InventoryItems.WhereByProperty(filterBy, value);
foreach(var item in query.Where(expr))
{
results.Add(ConvertItem(item));
}
}
}
return results;
}
フィルタリングするプロパティとabオブジェクトの値を渡します。 Queryableには2つのメソッドがあり、どちらも2つのパラメーターを取るため、どちらが適切かはわかりません。
そして、この時点で私は少し失われてしまいます。私はどのようにオリジナルをリファクタリングするか分からないOrderByProertyメソッドを提供するWhereByPropertyを提供する。私がここにいるものが完全に間違っていることは分かっています。私はそれをどうするか分からない。
理想的には、私ももっと論理積とまたはオペレータとクエリを構築するために使用することができ、オブジェクトのコレクションを提供することにより、これを拡張したいと思います。