목록에서 최대 값 가져 오기
나는 목록을 가지고 List<MyType>
, 내 타입이 포함 Age
하고RandomID
이제이 목록에서 최대 연령을 찾고 싶습니다.
가장 간단하고 효율적인 방법은 무엇입니까?
좋습니다. 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를 사용할 수 있습니다 . :)
각 경우에 Math.Max
원하는 경우 간단한 호출로 if 블록을 반환 할 수 있습니다 . 예를 들면 :
foreach (T item in list)
{
maxValue = Math.Max(maxValue, projection(item));
}
가정 당신은 LINQ에 액세스 할 수 있고, Age
이다 int
(당신은 또한 시도 할 수 있습니다 var maxAge
- 그것은 컴파일에 가능성이 높습니다)
int maxAge = myTypes.Max(t => t.Age);
RandomID
(또는 전체 개체) 도 필요한 경우 빠른 해결책은 MoreLinq 에서 사용 MaxBy
하는 것입니다.
MyType oldest = myTypes.MaxBy(t => t.Age);
int max = myList.Max(r => r.Age);
http://msdn.microsoft.com/en-us/library/system.linq.enumerable.max.aspx
thelist.Max(e => e.age);
var maxAge = list.Max(x => x.Age);
How about this way:
List<int> myList = new List<int>(){1, 2, 3, 4}; //or any other type
myList.Sort();
int greatestValue = myList[ myList.Count - 1 ];
You basically let the Sort()
method to do the job for you instead of writing your own method. Unless you don't want to sort your collection.
Easiest way is to use System.Linq as previously described
using System.Linq;
public int GetHighestValue(List<MyTypes> list)
{
return list.Count > 0 ? list.Max(t => t.Age) : 0; //could also return -1
}
This is also possible with a Dictionary
using System.Linq;
public int GetHighestValue(Dictionary<MyTypes, OtherType> obj)
{
return obj.Count > 0 ? obj.Max(t => t.Key.Age) : 0; //could also return -1
}
ReferenceURL : https://stackoverflow.com/questions/3464934/get-max-value-from-listmytype
'IT Share you' 카테고리의 다른 글
Git 치명적 : 프로토콜 'https'가 지원되지 않습니다. (0) | 2021.01.09 |
---|---|
Rails 콘솔에서 이메일 보내기 (0) | 2021.01.09 |
awk에서 배열의 길이를 어떻게 얻을 수 있습니까? (0) | 2021.01.09 |
Python, OpenCV에서 슬라이싱을 사용하여 이미지에서 영역 추출 (0) | 2021.01.09 |
Netbeans 7.4에서 Derby 데이터베이스를 시작할 수 없습니다. (0) | 2021.01.09 |