2012-10-23 4 views
0

동일한 데이터를 반환해야하는 3 가지 메소드가 있습니다. 데이터는 MyObjectModel의 목록이며 세 개의 목록에 동일한 데이터가 포함되어 있는지 확인하고 싶습니다. 나는 json에서 3 개의리스트를 직렬화하고 문자열의 길이가 모두 같은지 계산했다.은 객체 목록을 비교합니다.

더 좋은 방법이 있습니까?

감사합니다.

+0

첫째, 당신은 두 객체가 동일하게하는 것이 무엇을 의미하는지 결정해야합니다. 모든 필드는 동일하고 동일한 ID 등입니다. 그런 다음 http://msdn.microsoft.com/en-us/library/4d7sx9hd.aspx 또는 http://msdn.microsoft.com/en-us/을 구현할 수 있습니다. library/ms131187.aspx –

답변

6

사용 Enumerable.SequenceEqual는 :

if(list1.SequenceEqual(list2) && list2.SequenceEqual(list3)) { 
    ... 
} 
+0

답장을 보내 주셔서 감사합니다. 이것이 제가 찾고있는 것 같습니다. – frenchie

+0

목록에있는 항목의 순서가 중요합니까? –

+0

@AustinSalonen : 아니요, 각 목록의 요소 순서는 중요하지 않습니다. 그들이 모두 거기에있는 한 나는 괜찮아. 더 많은 것이 있습니까? – frenchie

0

이 작업을 수행하기 위해 HashSet의를 사용할 수 있습니다.

먼저 첫 번째 목록의 모든 항목을 HashSet에 추가합니다.

그런 다음 두 번째 목록을 반복하여 항목이 포함되어 있는지 HashSet에 요청합니다.

모두 포함되어 있으면 동일한 요소가 포함됩니다. 모든

var list1 = new string[] { "A", "B", "C" }; 
var list2 = new string[] { "B", "A", "C" }; 
var list3 = new string[] { "C", "B", "A" }; 

var hs = new HashSet<string>(list1); 
if (list2.All(x => hs.Contains(x)) && list3.All(x => hs.Contains(x))) 
{ 

} 
0
var isEqual=List<type>.Equals(List1,List2) 
var allEqual= isEqual && List<type>.Equals(List1,List3) 
관련 문제