【发布时间】:2016-08-27 15:42:52
【问题描述】:
我查看了this answer,了解如何在实体框架中动态创建 OrderBy 表达式。但我还想构建一个动态的 Where 表达式。类似这样的东西:
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 有两种方法 Where 都采用两个参数,所以我什至不确定哪个是正确的。
在这一点上,我更加迷失了。我不确定如何重构原始 OrderByProerty 方法以提供 WhereByProperty。我知道我在这里所拥有的是完全错误的。我不知道该怎么处理它。
理想情况下,我希望通过提供一组对象来进一步扩展这一点,这些对象集合可用于使用 ands 和 or 运算符构建查询。 p>
【问题讨论】:
标签: entity-framework linq where-clause expression-trees