Сравнить два List<>, которые не одинаковы по размеру - C#

Узнай цену своей работы

Формулировка задачи:

Добрый день! Помогите советом. Мне нужно сравнить два List<>, которые не одинаковы по размеру и мне нужно точно знать, какие элементы в них не совпадают. Написал вот такую штуку, но не совсем понимаю как она работает и как мне сделать наоборот.
public List<CSV> ActualList = new List<CSV>();
public List<CSV> values = new List<CSV>();
var  res = values.Cast<CSV>().Join(ActualList.Cast<CSV>(), ActualListik => new {Id=ActualListik.index}, l2 => new {Id=l2.index}, (ActualListik, l2)=> new { result = ActualListik.index }).ToList();
Но в переменной res хранятся только те значения, которые совпадают. Т.е. Лист 1 Лист 2 1 1 2 2 3 3 4 999 То в res будет 1 2 3. А мне нужно наоборот, чтобы было 999. Подскажите как это сделать? Заранее благодарен! Замечу, что я использую класс CSV в котором есть три поля: index, value и type.

Решение задачи: «Сравнить два List<>, которые не одинаковы по размеру»

textual
Листинг программы
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
using System.Collections;
 
namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            List<CSV> ActualList = new List<CSV>()
            {
                new CSV(){Index=1,Type="Type_1",Value=1},
                new CSV(){Index=2,Type="Type_2",Value=2},
                new CSV(){Index=3,Type="Type_3",Value=3},
                new CSV(){Index=4,Type="Type_4",Value=4},
                new CSV(){Index=5,Type="Type_5",Value=5}
            };
 
            List<CSV> OldList = new List<CSV>()
            {
                new CSV(){Index=1,Type="Type_1",Value=1},
                new CSV(){Index=2,Type="Type_2",Value=2},
                new CSV(){Index=6,Type="Type_6",Value=6}
            };
 
            var result = OldList.Except(ActualList, CSV.MyComparer);
 
            foreach (var item in result)
                Console.WriteLine(item);
            
            Console.ReadLine();
        }
    }
    class CSV
    {
        public int Index { get; set; }
        public int Value { get; set; }
        public string Type { get; set; }
 
        public static Comparer MyComparer
        {
            get { return new Comparer(); }
        }
   
        public override string ToString()
        {
            return string.Format("Index: {0}, Type: {1}, Value: {2}", Index, Type, Value);
        }
    }
    class Comparer : IEqualityComparer<CSV>
    {
        public bool Equals(CSV x, CSV y)
        {
            return x.ToString() == y.ToString();
        }
 
        public int GetHashCode(CSV obj)
        {
            return obj.ToString().GetHashCode();
        }
    }
}

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


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

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

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