>  기사  >  백엔드 개발  >  Linq에서 엔터티에 \'Contains()\' 기능을 구현하는 방법은 무엇입니까?

Linq에서 엔터티에 \'Contains()\' 기능을 구현하는 방법은 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-10-31 12:02:02371검색

How to Implement 'Contains()' Functionality in Linq to Entities?

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

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