Коллекции. Сравнение пользовательских типов по одному полю - C#
Формулировка задачи:
Есть коллекция c элементами пользовательского класса. Как сравнивать 2 коллекции (обе с этим классом) по одному полю (по string slovo)?
И когда пытаюсь убрать одинаковые элементы этого же класса в коллекции -косячит. Понимаю, что надо писать функции сравнения для пользовательского типа, но не знаю как. Так же как для сравнения в простых массивах не подходит.
Есть ли в коллекции функции типа Distinct чтоб убрать одинаковые элементы массива?
не идет, сволочь. Пишет что вылезает из массива. КАК???
class Termin //класс объектов слова+частоты { public string slovo; public int chastota; public double TF; }
Пробую обращаться к полю чтоб сравнить так
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); } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д