Select()를 사용하여 구조체 배열의 각 멤버에 대해 계산을 수행했지만 이제는 특정 특성이 최소 인 멤버를 갖기를 원합니다. 선택한 시퀀스에서 Min()과 같은 것을 사용하고 싶었지만 minmal 인 속성이 아닌 전체 구조체를 반환하는 방법을 모르겠습니다. 만약 내가 제대로 이해하고C에서 struct-Array의 최소값
답변
(10)는 "값"을 첫 번째 항목을 복용 (최소 값)에 의해 주문에 대한 방법 만 한 항목을 원하는 경우 물론이다
Persons.OrderBy(p => p.Age).FirstOrDefault();
은 (당신이 명시 것입니다) . 또한
:
from p in Persons
where p.Age == Persons.Select(p1 => p1.Age).Min()
select p;
당신에게 최소 값을 가진 모든 항목을 얻을 것이다.
+1. 나는 같은 방식으로 (최소한 한 항목에 대해) 그것을했을 것입니다. –
Jon의 대답은 성능이 좋지만이 것이 더 "내장"되어 있습니다. –
, 내가 말하고 싶지만 : 위임을 사용하여 ... 여기
사용하려는 같은 Example from Craig Murphypublic class Person
{
public int age;
public string name;
public Person(int age, string name)
{
this.age = age;
this.name = name;
}
}
// everyone under 25:
List<person> young = people.FindAll(delegate(Person p) { return p.age < 25; });
// sort your list:
people.Sort(delegate(Person p1, Person p2)
{ return p1.age.CompareTo(p2.age); });
public static TSource MinBy<TSource, TKey>(this IEnumerable<TSource> source,
Func<TSource, TKey> selector, IComparer<TKey> comparer)
{
source.ThrowIfNull("source");
selector.ThrowIfNull("selector");
comparer.ThrowIfNull("comparer");
using (IEnumerator<TSource> sourceIterator = source.GetEnumerator())
{
if (!sourceIterator.MoveNext())
{
throw new InvalidOperationException("Sequence was empty");
}
TSource min = sourceIterator.Current;
TKey minKey = selector(min);
while (sourceIterator.MoveNext())
{
TSource candidate = sourceIterator.Current;
TKey candidateProjected = selector(candidate);
if (comparer.Compare(candidateProjected, minKey) < 0)
{
min = candidate;
minKey = candidateProjected;
}
}
return min;
}
}
ThrowIfNull
은 확장 방법으로 정의됩니다.
internal static void ThrowIfNull<T>(this T argument, string name)
where T : class
{
if (argument == null)
{
throw new ArgumentNullException(name);
}
}
'source.OrderBy (selector, comparer) .FirstOrDefault()'와 어떻게 다른가? –
효율성. OrderBy는 O (n * lg n)입니다. 이것은 O (n)입니다. – configurator
당신은 바로 @configurator입니다. OrderBy의 구현을 살펴 보았습니다. 나는 동의합니다. +1 존. –
- 1. Parallel.ForEach를 사용하여 최소값 중에서 최소값 선택하기
- 2. 최소값 int 배열을 구현
- 3. TimePicker 최소값 Silverlight
- 4. 그래프 축의 최소값
- 5. 주어진 벡터의 최소값 찾기
- 6. 범위 최소값/최대 값 조회
- 7. SQL 쿼리 최소값 최대 값
- 8. 열의 모든 값에서 최소값 빼기
- 9. MySQL 필드의 최소값 설정 가능?
- 10. 엑셀 2007 비주얼 베이직 : 최소값 여기
- 11. C#을 사용하여 Excel 차트 최소값 설정하기
- 12. 최소값 XCode 데이터 모델 편집기에서 가져온 속성
- 13. LINQ 쿼리 중에 행의 최소값 가져 오기
- 14. C에서 #
- 15. MATLAB에서 2D 배열의 최소값 인덱스를 표시하는 방법은 무엇입니까?
- 16. 내가 방정식과 불평등의 세트로 귀결 프로그래밍 문제에 일하고 있어요 최소값
- 17. flex advancedatagrid의 최대 값 또는 최소값 강조 표시
- 18. 시간이 지남에 따라 프로세스를 분산시키는 방법 "충돌"최소값 얻기
- 19. Android Api 수준 : 목표 모델 대 매니페스트 최소값
- 20. PointCollection (C#)의 X 및 Y 좌표의 최소값
- 21. C에서 "var"는 C에서 "size_t"와 유사합니까?
- 22. c에서 비밀번호를 마스크하는 방법은 무엇입니까? C에서
- 23. C에서 __do_global_dtors_aux
- 24. C에서 스트림 ++
- 25. C에서 시작하기
- 26. C에서 휘발성
- 27. 는 C에서
- 28. C에서 수익 #
- 29. C에서 Delphi로
- 30. C에서 상속
코드를 게시하면 답변을받는 확률이 2 배 높습니다. –