Kob*_*obi 89
假设您可以访问LINQ,并且Age是int(您也可以尝试var maxAge- 它更有可能编译):
int maxAge = myTypes.Max(t => t.Age);
Run Code Online (Sandbox Code Playgroud)
如果您还需要RandomID(或整个对象),一个快速的解决方案是使用MaxBy从MoreLinq
MyType oldest = myTypes.MaxBy(t => t.Age);
Run Code Online (Sandbox Code Playgroud)
Jon*_*eet 36
好的,所以如果你没有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;
}
Run Code Online (Sandbox Code Playgroud)
或者你可以写一个更通用的版本,可以在许多列表类型中重用:
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;
}
Run Code Online (Sandbox Code Playgroud)
你可以使用它:
// C# 2
int maxAge = FindMaxValue(list, delegate(MyType x) { return x.Age; });
// C# 3
int maxAge = FindMaxValue(list, x => x.Age);
Run Code Online (Sandbox Code Playgroud)
或者你可以使用LINQBridge :)
在每种情况下,如果需要,您可以通过简单的调用返回if块Math.Max.例如:
foreach (T item in list)
{
maxValue = Math.Max(maxValue, projection(item));
}
Run Code Online (Sandbox Code Playgroud)
ani*_*key 32
int max = myList.Max(r => r.Age);
Run Code Online (Sandbox Code Playgroud)
http://msdn.microsoft.com/en-us/library/system.linq.enumerable.max.aspx