LINQ to Entities의 동적 WHERE 절(OR)
LINQ에서 OR 연산자를 사용하여 동적 쿼리를 만들려면 LINQKit 유틸리티인 PredicateBuilder가 필요합니다. 방법은 다음과 같습니다.
<code class="language-csharp">var query = from u in context.Users select u; var pred = Predicate.False<User>(); if (type.HasFlag(IdentifierType.Username)) pred = pred.Or(u => u.Username == identifier); if (type.HasFlag(IdentifierType.Windows)) pred = pred.Or(u => u.WindowsUsername == identifier); return query.Where(pred.Expand()).FirstOrDefault();</code>
그러나 AsExpandable()
을 사용하는 것도 또 다른 옵션입니다.
<code class="language-csharp">return query.AsExpandable().Where(pred).FirstOrDefault();</code>
Expand
메서드를 사용하면 EF가 처리할 수 없는 호출 식을 처리할 수 있습니다. 그렇지 않으면 예외가 발생합니다.
Expand
없이 동일한 기능을 달성하는 또 다른 Predicate Builder 옵션은 http://petemontgomery.wordpress.com/2011/02/10/a-universal-predicatebuilder/에서 찾을 수 있습니다.
위 내용은 LINQ to Entities에서 OR을 사용하여 동적 WHERE 절을 작성하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!