Вывести дубликаты двух списков - 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
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 4.308 из 5
Похожие ответы