【发布时间】:2014-01-10 12:48:32
【问题描述】:
我只是想知道如何使用 EntityFramwork 创建一个动态的 where。例如,我需要动态构建此查询,但我必须检查一个条件,然后它通过了连接 where,但会与我想要 OR 的其他条件进行 AND。 这是我的例子:
public IEnumerable<Data> GetAllData(Criteria searchCriteria)
{
var Query = this._repository.Retrieve();
if (searchCriteria.condition1)
{
Query = Query.Where(p => (p.value1> 0 || p.value2 > 0));
}
if (searchCriteria.condition2)
{
Query = Query.Where(p => (p.value3> 0 || p.value4 > 0));
}
if (searchCriteria.contition3)
{
Query = Query.Where(p => (p.value5> 0 || p.value6 > 0));
}
return Query.Distinct().OrderBy(c=>c.ID).ToList();
}
这将返回与所有条件匹配的所有数据,具体取决于它是否通过条件。但我认为这将是 AND,但我希望返回所有数据至少与一个条件匹配,至少一个。 感谢您的帮助!!!
【问题讨论】:
-
我不认为我正在尝试做的事情是错误的......它只是一个查询构建器......我想知道如何为那些通过条件的人构建一个函数列表,使一个或与他们并将其添加到 where 子句。
标签: asp.net entity-framework lambda unit-of-work