Используйте $ eq . Определяет условие равенства. Оператор $ eq сопоставляет документы, в которых значение поля равно указанному значению.
Проверьте это это для дальнейшего объяснения и примеров
Итак, если у вас нет 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));
}
Самый простой на самом деле всего Age.Max()
, Вы не должны больше кодировать.
int max = myList.Max(r => r.Age);
http://msdn.microsoft.com/en-us/library/system.linq.enumerable.max.aspx
Предполагая, что у вас есть доступ к LINQ, а Age
- это int
(вы также можете попробовать var maxAge
- это более вероятно для компиляции):
int maxAge = myTypes.Max(t => t.Age);
Если вам также нужен RandomID
(или весь объект), быстрое решение - использовать MaxBy
из MoreLinq
MyType oldest = myTypes.MaxBy(t => t.Age);