>백엔드 개발 >C++ >LINQ to Entities에서 OR을 사용하여 동적 WHERE 절을 작성하는 방법은 무엇입니까?

LINQ to Entities에서 OR을 사용하여 동적 WHERE 절을 작성하는 방법은 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2025-01-22 05:01:08666검색

How to Build a Dynamic WHERE Clause with OR in LINQ to Entities?

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.