Коллекции. Сравнение пользовательских типов по одному полю - 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);
}
}
}