У меня есть коллекция классов с полями
Serial
{
...
public long? KinopoiskId { get; set; }
public long? WorldArtkId { get; set; }
...
}
Одно из этих полей может быть null
(уточнение: гарантировано может быть только одно поле null
). Я написал IEqualityComparer
:
public class SerialsEqualityComparer : IEqualityComparer<Serial>
{
public bool Equals(Serial x, Serial y)
{
if (x?.KinopoiskId != null)
{
if (y?.KinopoiskId != null)
{
return x.KinopoiskId == y.KinopoiskId;
}
}
if (y?.WorldArtId != null)
{
return x != null && x.WorldArtId == y.WorldArtId;
}
return false;
}
public int GetHashCode(Serial obj)
{
eturn obj.GetHashCode();
}
}
Но так не удалось удалить дубликаты, как это можно сделать?
Если вы используете метод .Distinct() для фильтрации или ему подобные, то для их работы необходимо корректное переопределение метода GetHashCode(), так как Distinct работает создавая коллекцию типа Set (Сначала сравнивает по хэшу, а затем методом Equals, если найдено совпадение).
Переопределить можно, например, так -
public int GetHashCode(Serial obj)
{
unchecked
{
int hash = 17;
hash = hash * 23 + obj?.KinopoiskId ?? 0;
hash = hash * 23 + obj?.WorldArtId ?? 0;
return hash;
}
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Ошибка возникает при вызове метода Save(), подскажите в чем причина? Пользователь создаеться без ошибок, а запись не проходит, хотя файл каким...
мне нужно сделать цикл, который будет длиться 20 секундВсе это время, будет производиться запрос к БД на проверку значения State
Делаю rss-reader, не знаю как привести pubdate к виду которому я хочуПо умолчанию pubdate имеет вид "Tue, 06 Aug 2019 00:00:00 +0300"