루프에서 일부의 LINQ 표현을 결합, 그래서 난 기사를 아래에서 도움 방법 :C#을 내가 몇 가지의 LINQ 표현을 결합하려는
http://www.c-sharpcorner.com/uploadfile/04fe4a/predicate-combinators-in-linq/ 및 http://thanhhh.blogspot.com/2011/10/linq-to-entities-predicatebuilder-and.html
를 그리고 난 이런 일반적인 목록을 가지고 :
를 내 LINQ 식을 결합하기위한 내가 코드에서 사용하는 경우List<long> lstPA = new List<long>() { 2, 3 }; // the numbers can be added or removed
, 난 DB에서 올바른 결과 (레코드) 수 (내가 엔티티 프레임 워크 4.0 사용) :
012 3,516,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 루프를 사용해야합니까?)?
당신은 훨씬 더 빠른 접근 방법 인 .Where (x => lstPA.Contains (x.post_author))로 뭔가를 할 수 있습니다. – slippyr4
Google closure over 루프 변수입니다. –