당신은 다중 필드를 할 수있는이 같은 Linq에에 참여 : 여기
var List1 = new List<Class1>();
List1.Add(new Class1 { Field1 = 1, Field2 = 2 });
List1.Add(new Class1 { Field1 = 3, Field2 = 4 });
var List2 = new List<Class2>();
List2.Add(new Class2 { Field1 = 1, Field2 = 2 });
List2.Add(new Class2 { Field1 = 5, Field2 = 6 });
var results = List1.Join(List2,
l1 => new {l1.Field1, l1.Field2},
l2 => new {l2.Field1, l2.Field2},
(l1, l2) => new {List1 = l1, List2 = l2});
의 핵심 인 2 람다 l1 => new {l1.Field1, l1.Field2}
및 l2 => new {l2.Field1, l2.Field2}
. 이는 관심있는 두 필드가 들어있는 각 테이블의 행에 대한 익명 개체를 만듭니다.이 두 개체는 익명 개체가 모두 같을 때만 성공합니다.
세 번째 람다는 "조인 된"값으로 반환되는 개체를 만드는 것입니다. 원하는 모양을 만들 수 있습니다.이 경우 각 목록의 일치하는 행을 포함하는 .Class1
및 .Class2
속성이있는 객체가 만들어집니다. 당신이 원한다면 그것을 평평하게 할 수도 있고 그리고/또는 당신이 필요로하는 추가 속성을 추가 할 수도 있습니다.
이 구문의 전체 세부 사항은 MSDN의 페이지 joins using composite keys에서 확인할 수 있습니다.
나는 다음과 같은 2 독립의 클래스를 사용 :
class Class1
{
public int Field1 { get; set; }
public int Field2 { get; set; }
}
class Class2
{
public int Field1 { get; set; }
public int Field2 { get; set; }
}
LINQPad 파일을 사용할 수 here입니다.
유효한 SQL 쿼리가 아닙니다 –
그냥 JOIN 부분입니까? 전체 쿼리를 게시해야합니다. – dpdragnev
.i .i는 나머지 부분을 잘랐다. 나는 그 줄이 필요하다. –