嗨,有任何使用Linq或lambda表达式的方法构建或任何其他方法,我们可以获得存在的记录,IList<string[]>
一个但不在IList<string[]>
两个,反之亦然。我尝试使用linq Except关键字,但它不起作用,当我对{[1}}上的字符串[]进行操作时,它的工作正常。
答案 0 :(得分:3)
您需要为string[]
实现IEqualityComparer
,默认情况下,数组会通过引用进行比较。即使数组的元素相同,引用也不同。所以Except
方法将它们视为不同。
class ArrayComparer : IEqualityComparer<string[]>
{
public bool Equals(string[] x, string[] y)
{
// do your comparison here
}
public int GetHashCode(string[] obj)
{
// write your hash algorithm
}
}
然后您可以通过传递Except
方法来使用此比较器:
var result = list1.Except(list2, new ArrayComparer());