Коллекции. Сравнение пользовательских типов по одному полю - C#

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

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

Есть коллекция c элементами пользовательского класса. Как сравнивать 2 коллекции (обе с этим классом) по одному полю (по string slovo)?
class Termin    //класс объектов слова+частоты
    {
        public string slovo;
        public int chastota;
        public double TF;
    }
И когда пытаюсь убрать одинаковые элементы этого же класса в коллекции -косячит. Понимаю, что надо писать функции сравнения для пользовательского типа, но не знаю как. Так же как для сравнения в простых массивах не подходит. Есть ли в коллекции функции типа Distinct чтоб убрать одинаковые элементы массива?
Пробую обращаться к полю чтоб сравнить так
foreach (Termin t in slova1)
            {
                for (int i = 0; i < slova1.Count; i++)
                {
                   for (int j = 0; j < slova1.Count; j++)
                  {
                        if (Equals(t.slovo[i], t.slovo[j]))
                        {
                       Console.Write(t.slovo[i]);Console.Write(t.slovo[j]);  Console.Write(Equals(t.slovo[i], t.slovo[j]));// проверка
                        }
 
                        slova1.Remove(t.slovo[j]);
                    }
                }
            }
не идет, сволочь. Пишет что вылезает из массива. КАК???

Решение задачи: «Коллекции. Сравнение пользовательских типов по одному полю»

textual
Листинг программы
using System;
 
namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            Termin t1 = new Termin() { slovo = "first" };
            Termin t2 = new Termin() { slovo = "first"};
 
            Console.WriteLine(((IComparable)t1).CompareTo(t2));
            Console.ReadKey(true);
        }
    }
 
    class Termin : IComparable    
    {
        public string slovo;
        public int chastota;
        public double TF;
 
        int IComparable.CompareTo(object obj)
        {
            Termin compareObj = obj as Termin;
            if (compareObj == null) throw new ArgumentException("Можно сравнивать только элементы одного типа.");
            return slovo.CompareTo(compareObj.slovo);
        }
    }
}

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


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

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

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