比较对象列表

时间:2012-10-23 03:43:42

标签: c#

我有3个方法应该返回相同的数据。数据是MyObjectModel的列表,我想检查三个列表是否包含相同的数据。我想在json中序列化3个列表中的每个列表并计算字符串的长度是否都相同。

有更好的方法吗?

感谢。

3 个答案:

答案 0 :(得分:6)

使用Enumerable.SequenceEqual

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

答案 1 :(得分: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)))
{

}

答案 2 :(得分:0)

var isEqual=List<type>.Equals(List1,List2)
var allEqual= isEqual && List<type>.Equals(List1,List3)