2014-06-11 4 views
1

두 가지 유형의 목록이 있습니다. 공통적 인 GUID를 비교할 필요가 있습니다.두 개의 다른 목록을 비교하여 세 번째 목록 채우기

값이 두 목록에 모두있는 경우 세 번째 목록에서 isPresent 속성을 채울 필요가 있습니다.

class a { 
Guid stub; 
string name; 
int number; 
} 

class b { 
Guid SecondStub; 
. 
. 

} 
class temp 
{ 
    bool isPresent; 
    string somethingElse; 
} 

------------------------------------------ 

이제는 각각 유형 a와 b를 하나씩 갖고 있으며 세 번째 목록에서 isPresent 속성을 채워야합니다.

foreach (var a in ListofA) 
{ 
temp.Add(new Temp(){ 
isPresent = ListOfB.Where(l => l.SecondStub == a.Stub).Equals(null) 
})}; 

이 작동하지 않습니다. 제발 도와주세요.

+0

아니요 ... 더 많은 속성이 있습니다. – SJMan

답변

1

은 다음과 같아야합니다 (내 휴대 전화에서 너무 떨어져있을 서식) :

당신이 말할 온도에서 어떤 장소를 떠나 적이 없다 비록
var temps = from a in ListofA 
      join b in ListofB on a.SecondStub == b.Stub 
      select new temp { isPresent = True, 
          OtherProperty = "something", 
          ThirdProperty = "something else"}; 

어느 것이 사실 이었는지, isPresent 플래그.

아마도 임시의 속성에 값을 포함시킬 것입니까?

+0

temp에 둘 이상의 속성이있는 경우이 기능이 작동하지 않습니다. – SJMan

+0

@ShankyJain, 다른 속성에 정보를 추가하는 방법에 대한 제 편집을 참조하십시오. – paqogomez

0

Where가 작동하지 않는 이유는 어디에서 항상 개체를 반환한다는 것입니다.이 개체는 열거 가능 항목을 반환하고 항목이 없을 수 있기 때문에 항상 null이 아닙니다.

Where 대신 Any를 사용하십시오.

var c = a 
    .Select(x => new Temp { 
     IsPresent = b.Any(z => z.SecondStub == x.Stub) 
    }) 
    .ToList(); 

LINQ 구문에서

관련 문제