Получить максимальное значение из List < myType>

Используйте $ eq . Определяет условие равенства. Оператор $ eq сопоставляет документы, в которых значение поля равно указанному значению.

Проверьте это это для дальнейшего объяснения и примеров

55
задан Arulkumar 18 January 2016 в 10:44
поделиться

5 ответов

Итак, если у вас нет LINQ, вы можете закодировать его:

public int FindMaxAge(List<MyType> list)
{
    if (list.Count == 0)
    {
        throw new InvalidOperationException("Empty list");
    }
    int maxAge = int.MinValue;
    foreach (MyType type in list)
    {
        if (type.Age > maxAge)
        {
            maxAge = type.Age;
        }
    }
    return maxAge;
}

Или вы можете написать более общую версию, многократно используемую для множества типов списков:

public int FindMaxValue<T>(List<T> list, Converter<T, int> projection)
{
    if (list.Count == 0)
    {
        throw new InvalidOperationException("Empty list");
    }
    int maxValue = int.MinValue;
    foreach (T item in list)
    {
        int value = projection(item);
        if (value > maxValue)
        {
            maxValue = value;
        }
    }
    return maxValue;
}

Вы можете использовать это с:

// C# 2
int maxAge = FindMaxValue(list, delegate(MyType x) { return x.Age; });

// C# 3
int maxAge = FindMaxValue(list, x => x.Age);

Или вы можете использовать LINQBridge :)

В каждом случае вы можете вернуть блок if простым вызовом Math. Max, если хотите. Например:

foreach (T item in list)
{
    maxValue = Math.Max(maxValue, projection(item));
}
36
ответ дан 26 November 2019 в 17:39
поделиться

Самый простой на самом деле всего Age.Max(), Вы не должны больше кодировать.

0
ответ дан 26 November 2019 в 17:39
поделиться
32
ответ дан 26 November 2019 в 17:39
поделиться
thelist.Max(e => e.age);
8
ответ дан 26 November 2019 в 17:39
поделиться

Предполагая, что у вас есть доступ к LINQ, а Age - это int (вы также можете попробовать var maxAge - это более вероятно для компиляции):

int maxAge = myTypes.Max(t => t.Age);

Если вам также нужен RandomID (или весь объект), быстрое решение - использовать MaxBy из MoreLinq

MyType oldest = myTypes.MaxBy(t => t.Age);
88
ответ дан 26 November 2019 в 17:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: