Linq를 사용하여 엔터티에 'Contains()' 구현을 위한 해결 방법
'Contains()' 메서드는 Linq에서 기본적으로 지원되지 않습니다. 쿼리에서 ID 컬렉션을 사용할 때 문제가 되는 엔터티입니다. 여기서는 이 제한 사항을 해결하기 위한 실행 가능한 솔루션을 제시합니다.
해결책:
지원되지 않는 'Contains()' 메서드를 대체하기 위해 'Any() ' 메소드를 대신 사용:
var q = from t in svc.OpenTransaction where txnIds.Any<long>(tt => tt == t.OpenTransactionId) select t;
그러나 이 수정 사항은 Linq to Entities의 컨텍스트에서 'Any()'가 지원되지 않는 문제를 해결하지 않습니다. 이를 극복하기 위해 우리는 대체 접근 방식을 제공합니다:
public static IQueryable<TEntity> WhereIn<TEntity, TValue> ( this ObjectQuery<TEntity> query, Expression<Func<TEntity, TValue>> selector, IEnumerable<TValue> collection )
이 확장 방법을 사용하면 다양한 엔터티 유형 및 속성에 필터를 적용할 수 있습니다.
사용 예:
다음 코드는 'WhereIn()' 메서드를 활용하는 방법을 보여줍니다.
using (MyObjectContext context = new MyObjectContext()) { //Using method 1 - collection provided as collection var contacts1 = context.Contacts.WhereIn(c => c.Name, GetContactNames()); //Using method 2 - collection provided statically var contacts2 = context.Contacts.WhereIn(c => c.Name, "Contact1", "Contact2", "Contact3", "Contact4" ); }
이 솔루션을 사용하면 작업하는 동안 'Contains()' 기능을 얻을 수 있습니다. Linq to Entities를 사용하면 쿼리의 유연성이 향상됩니다.
위 내용은 Linq에서 엔터티에 \'Contains()\' 기능을 구현하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!