我想结合一些 Linq 表达式,所以我从下面的文章中得到帮助:
http://www.c-sharpcorner.com/uploadfile/04fe4a/predicate-combinators-in-linq/ 和 http://thanhhh.blogspot.com/2011/10/linq-to-entities-predicatebuilder-and.html
我有一个这样的通用列表:
List<long> lstPA = new List<long>() { 2, 3 }; // the numbers can be added or removed
如果我在代码下使用组合我的 linq 表达式,我会从 db 获得正确的结果(记录)(我使用 Entity Framework 4.0):
var exp1 = Predicate.FalseExpression<posts>();
exp1 = exp1.Or(x => x.post_author == 2);
exp1 = exp1.Or(x => x.post_author == 3);
但是当我在 foreach 循环中结合 linq 表达式时,像这样:
var exp1 = Predicate.FalseExpression<posts>();
foreach (long id in lstPA)
{
exp1 = exp1.Or(x => x.post_author == id);
}
我无法从 db 获得正确的结果(记录)。
2个代码块之间有什么区别以及如何解决这个问题(我必须使用foreach循环)?