Linq를 사용하여 메서드 구문을 사용하여 관련 테이블에서 특정 값이있는 테이블의 모든 레코드 찾기

존 S

이 Linq 쿼리 구문은 작동하고 필요한 것을 정확히 반환하지만 Method 구문을 사용하여 동등한 쿼리를 이해하고 싶습니다.

from r in Resources 
        from t in r.Teams
        where t.Id ==1
        select r

자원 테이블과 팀의 테이블이 많은 관계로 많은있다.

유창하거나 방법 구문은 무엇입니까?

Sergey Berezovskiy

두 개의 from 절은 SelectMany 연산자 와 동일 합니다. 그러나이 경우에는 각 요소에서 결과 선택기 함수를 호출하는 SelectMany 연산자의 오버로드가됩니다.

public static IEnumerable<TResult> SelectMany<TSource, TCollection, TResult>(
    this IEnumerable<TSource> source,
    Func<TSource, IEnumerable<TCollection>> collectionSelector,
    Func<TSource, TCollection, TResult> resultSelector
)

리소스 시퀀스를 평평하게 할뿐만 아니라 리소스와 팀을 모두 포함하는 새로운 시퀀스를 생성합니다.

Resources.SelectMany(r => r.Teams, (r,t) => new { r, t })
         .Where(x => x.t.Id == 1)
         .Select(x => x.r)

참고 : 쿼리 구문을 메서드 구문으로 변환하지 않고 동일한 결과에만 집중하는 경우 다음 쿼리를 사용할 수도 있습니다 (리소스 팀에 중복이있는 경우 결과가 약간 다를 수 있습니다. 중복되지 않습니다.) 이 쿼리로 리소스)

Resources.Where(r => r.Teams.Any(t => t.Id == 1))

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관