2016-09-13 2 views
-5

키가 +10 또는 +20 인 경우 키를 비교하고 출력 전에 그룹화해야합니다.C# 키 값 쌍 : while 루프의 키 비교

예상 출력

Keys Value 
6000 apple 
6010 pear 
6030 papaya 
6060 banana 
6090 guava 

:

Keys: 6000 - 6030 
     apple 
     pear 
     papaya 

Keys: 6060 
     banana 

Keys: 6090 
     guava 

이 내 코드는하지만 오류 얻을 : 여기

string firstKeyVal; 
string lastKeyVal; 

foreach (KeyValuePair<string, string> kvp in Dict) 
{ 
    while(kvp.Key = kvp.Key +10 || kvp.Key + 20) 
    { 
     lastKeyVal = (kvp + 1).key; 
    } 
} 
+7

당신은 모든 C# 언어에 익숙하지 않는 것. 나는 무엇이든 구현하려고 시도하기 전에 최소한 기초를 얻으라고 제안합니다. 시간을 절약 할 수 있습니다. –

+0

while 루프를 작성하는 데 문제가 있습니다. 나는 초보자이며 전에 공식적으로 C#을 배웠다. 나는 몇 가지 구문 오류가 있으며 문제를 해결하는 데 도움이 필요하다는 것을 알고있다. – Manick9

+0

공차가있는 복식에 대해 유사한 작업을 수행하는이 질문을보십시오 (http://stackoverflow.com/questions/39361077/groupby-of-listdouble-with-tolerance-doesnt-work/39361541#39361541). – HimBromBeere

답변

2

는 GROUPBY

있는 방법이다 0

사전 :

Dictionary<int, string> dict = new Dictionary<int, string>() { { 6000, "apple" }, { 6010, "pear" }, { 6030, "papaya" }, { 6060, "banana" }, { 6090, "guava" } }; 

그룹화 :

int group = 0, prev = 0; 
var result = dict.GroupBy(x => 
{ 
    if (!((prev + 20) == x.Key || (prev + 10) == x.Key)) 
    { 
     group++; 
    } 
    prev = x.Key; 
    return group; 
});