Вывести дубликаты двух списков - C#
Формулировка задачи:
Всем доброго времени суток!
У меня есть два list с массивом строк List<string[]>. Я пытаюсь использовать except (выявить разницу в списках),
применяя компаратор.
Но результат он мне выдает пустой. Что я делаю не так?!
IEnumerable<string[]> except = list1.Except(list2, new Compars());
class Compars : IEqualityComparer<string[]>
{
#region IEqualityComparer<string[]> Members
public bool Equals(string[] x, string[] y)
{
return x[2].Equals(y[2]);
}
public int GetHashCode(string[] w)
{
return 0;
}
#endregion
}Решение задачи: «Вывести дубликаты двух списков»
textual
Листинг программы
using System;
using System.Linq;
using System.Collections.Generic;
public class Test
{
public static void Main()
{
var list1 = new List<string[]>
{
new[] {"фраза","фраза2","X1","1","1234","фраза"},
new[] {"фраза","фраза2","X2","1","1234","фраза"},
new[] {"фраза","фраза2","X3","1","1234","фраза"},
new[] {"фраза","фраза2","X10","1","1234","фраза"},
new[] {"фраза","фраза2","X11","1","1234","фраза"},
new[] {"фраза","фраза2","X12","1","1234","фраза"},
new[] {"фраза","фраза2","X13","1","1234","фраза"},
new[] {"фраза","фраза2","X14","1","1234","фраза"},
new[] {"фраза","фраза2","X15","1","1234","фраза"},
new[] {"фраза","фраза2","X16","1","1234","фраза"},
new[] {"фраза","фраза2","X17","1","1234","фраза"},
new[] {"фраза","фраза2","X18","1","1234","фраза"},
new[] {"фраза","фраза2","X1","1","1234","фраза"},
new[] {"фраза","фраза2","X2","1","1234","фраза"},
new[] {"фраза","фраза2","X3","1","1234","фраза"}
};
var list2 = new List<string[]>
{
new[] {"фраза","фраза2","X1","1","1234","фраза"},
new[] {"фраза","фраза2","X2","1","1234","фраза"},
new[] {"фраза","фраза2","X3","1","1234","фраза"}
};
var diff = list1.Except(list2, new Compars());
foreach (var arr in diff)
Console.WriteLine(string.Join(" ", arr));
}
}
class Compars : IEqualityComparer<string[]>
{
#region IEqualityComparer<string[]> Members
public bool Equals(string[] x, string[] y)
{
return x[2].Equals(y[2]);
}
public int GetHashCode(string[] w)
{
return 0;
}
#endregion
}