나는 람다에 익숙하지 않고 좀 더 복잡한 것을 시도 할 때까지는 꽤 똑바로 보였다. 나는이 사전을 가지고있다.C#의 람다 식 이해하기
이 중 가장 큰 값을 갖는 키 - 발 쌍의 키를 얻고 싶습니다. 내가 시도하는 것입니다 :
dict.Keys.Max(g => dict[g])
키 목록에서 해당되는 추론,하는 DICT 최대 규모의 [키]는 그 중 하나를 선택하십시오. 그러나 이것은 해당 키가 아닌 가장 큰 값 자체를 선택합니다.
나는 람다에 익숙하지 않고 좀 더 복잡한 것을 시도 할 때까지는 꽤 똑바로 보였다. 나는이 사전을 가지고있다.C#의 람다 식 이해하기
이 중 가장 큰 값을 갖는 키 - 발 쌍의 키를 얻고 싶습니다. 내가 시도하는 것입니다 :
dict.Keys.Max(g => dict[g])
키 목록에서 해당되는 추론,하는 DICT 최대 규모의 [키]는 그 중 하나를 선택하십시오. 그러나 이것은 해당 키가 아닌 가장 큰 값 자체를 선택합니다.
var maxValue = dict.Max((maxPair) => maxPair.Value);
var maxPairs = dict.Where((pair) => pair.Value == maxValue);
이렇게하면 최대 값을 가진 모든 쌍의 목록을 얻을 수 있습니다. 그냥 키를 원하는 경우
, 당신은 나중에이 작업을 수행 할 수 있습니다 내가 맥케이에 내 생각을 기반으로 답변을 추가하기로 결정
var maxKeys = maxPairs.Select((pair) => pair.Key);
dict.OrderBy(v => v.Value).Last().Key;
그것을해야한다. 기본적으로 값으로 KeyValuePair
을 주문하고 최대 값이 될 마지막 값을 선택합니다. 그리고 마지막 하나에서 당신은 키에만 관심이 있습니다.
OP는 가장 큰 값이 아니라 가장 큰 값에 해당하는 키를 원합니다. 당신은'dict.Values.Max()'를 썼을지도 모른다. –
@EdS. 너무 빨리 응답했습니다. 지금 바로 수정하십시오 –
쉽게 실수하세요; 나는 항상 그렇게한다. –
dict.Keys.OrderByDescending(g => dict[g]).First()
원하는대로 수행되지만 큰 사전에는 비효율적 일 수 있습니다. John Skeet의 MaxBy
에있는 MoreLinq은 효율적으로 원하는 작업을 정확하게 수행합니다.
. 이 단지 키 제공, 표준 LINQ 방법 주어진 매우 빠르게 수행합니다 영업 이익은 단지 하나의 키 (NO 중복 값) 후 개선이 항상 있다는 것을 알고 있다면, 지금
var maxValue = dict.Max(p => p.Value);
var keys = dict.Where(p => p.Value == maxValue).Select(p => p.Key);
를 (아주 작은) 것 먼저 최대 값을 찾기 위해 평가 된 모든 후에 평가 될 수있는 최대 값을 가진 하나까지이 게으른 평가로 인해에만 요소 First
을 사용 :
var key = dict.Where(p => p.Value == maxValue).First().Key;
중복 된 값이 없다면 개선되었지만 어쨌든 원하는 결과 일 수 있습니다. 최대 값을 갖는 모든 키, 최대 값을 갖는 키 중 하나만 갖고 있어도 상관하지 않을 수 있습니다. 그래서이 솔루션은 당신이 원하는 것일 수 있습니다. 나는 일반적으로 그렇게하는 것이 잘못되었다고 생각합니다. 내 코드 (및 코드의 첫 번째 부분)는 최대 값만 계산하고 나중에 키 값을 찾게됩니다. 어쩌면 당신은 첫 번째를 원할 것입니다, 아마도 당신은 카운트를 원할 것입니다, 아마도 당신은 그것들을 모두 화면에 인쇄하고 싶을 것입니다. 목록에 쿼리 할 수 있습니다. – McKay
글쎄, 그것은하지 실제 코드, 당신 '이다 2 단 발췌 문장의 왼쪽에 뭔가를 넣어야합니다. 앞서 나갈 수 있도록 과제를 만드십시오. * var * 키워드는 좋습니다. –
당신이 나를 오해하고있는 것처럼 보이기 때문에 나는 더 구체적으로 설명 할 것입니다 : 사전에있는 모든 값 중 가장 큰 값을 가진 키 - 값 쌍으로부터 키의 값으로 평가할 식을 찾고 있습니다. 나는 이것이 이것을 약간 더 분명하게하기를 바란다. – martixy