Баги при сравнении текущего елемента IEnumerable с последним Last(), LastOrDefault - C#
Формулировка задачи:
Дорого вечера уважаемые знатоки
Кто мне объяснит почему при сравнении текущего элемента коллекции в цикле с последним или последним или дефолтным всегда вытекает ложь. Вопрос относится именно к IEnumerable - с листами и прочей нечистью все работает
Пример который никогда не вернет значение отличное от NULL
Код который возвращает, под спойлером - чтобы не было соблазна писать что и как можно сделать
да также не работает ElementAt() - Это для любителей фор"а, как не работает да вот так dates.ElementAt(1) == dates.ElementAt(1) всегда ложь
public DateItem Get(IEnumerable<DateItem> dates)
{
foreach (var dateItem in dates)
{
if (dateItem.Equals(dates.Last()))
{
return dateItem
}
}
return null;
}public DateItem Get(List<DateItem> dates)
{
foreach (var dateItem in dates)
{
if (dateItem.Equals(dates.Last()))
{
return dateItem
}
}
return null;
}Решение задачи: «Баги при сравнении текущего елемента IEnumerable с последним Last(), LastOrDefault»
textual
Листинг программы
public DateItem Get(IEnumerable<DateItem> dates)
{
var last = dates.Last();
foreach (var dateItem in dates)
{
if (dateItem.Equals(last))
{
return dateItem;
}
}
return null;
}