我正在尝试从以下SQL示例创建equivelant LINQ查询:
SELECT *
FROM FOO
WHERE
((a == <val1>) AND (b == <val2>) AND (c == <val3>))
OR
((a == <val4>) AND (b == <val5>) AND (c == <val6>))
总会有一个a,b和c一起被OR包围在一起.这种模式可以发生很多次.
我发现工作的唯一解决方案是使用LINQ Union,但生成的SQL不是我想要的.
最佳答案 尝试实现
PredicateBuilder
课程.
那么也许你可以使用这样的东西:
var pred = PredicateBuilder.False<Foo>();
foreach(var criteria in myCriteriaSet)
{
pred = pred.Or(x => x.ID== criteria.ID &&
x.Name== criteria.Name &&
x.Created == criteria.SomeDate);
}
var matching = db.Foos.Where(pred);
然后假设您的标准是可枚举的.根据需要进行修改以满足您的需求.