2012-10-23 200 views
0

我有3個方法應該返回相同的數據。數據是MyObjectModel的列表,我想檢查這三個列表是否包含相同的數據。我想在json中序列化3個列表中的每一個,並計算字符串的長度是否全部相同。比較對象列表

有沒有更好的方法?

謝謝。

+0

首先,你需要確定這是什麼意思2個對象相等。所有字段相同,ID相同等。然後,您可以查看實現http://msdn.microsoft.com/en-us/library/4d7sx9hd.aspx或http://msdn.microsoft.com/en-us/庫/ 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)