Баги при сравнении текущего елемента IEnumerable с последним Last(), LastOrDefault - C#

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

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

Дорого вечера уважаемые знатоки Кто мне объяснит почему при сравнении текущего элемента коллекции в цикле с последним или последним или дефолтным всегда вытекает ложь. Вопрос относится именно к IEnumerable - с листами и прочей нечистью все работает Пример который никогда не вернет значение отличное от NULL
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;
    }
да также не работает ElementAt() - Это для любителей фор"а, как не работает да вот так dates.ElementAt(1) == dates.ElementAt(1) всегда ложь

Решение задачи: «Баги при сравнении текущего елемента 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;
}

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


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

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

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