2012-10-23 145 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)