2013-11-07 3 views
0

Весь этот код работает правильно. Мой вопрос заключается в переменной lTest в Messagebox, как я могу отобразить этот результат списка, конкатенированный запятыми.Переключить переменные запятыми в C# winforms

List<int> lNetworkIds = new List<int>(); 
Dictionary<DisplayDay, int> numDayOccurances = new Dictionary<DisplayDay, int>(); 

foreach (Proposal lDetail in this._Proposal.Details) 
{ 
    if (!lNetworkIds.Contains(lDetail.NetworkId)) 
     lNetworkIds.Add(lDetail.NetworkId); 
    if (!numDayOccurances.ContainsKey(lDetail.Day)) 
     numDayOccurances[lDetail.Day] = 0; 
    numDayOccurances[lDetail.Day]++; 
} 

if (numDayOccurances.Count > 0) 
{ 

    string lTest = ""; 
    foreach (DisplayDay myday in numDayOccurances.Keys) 
    { 

     lTest += myday.ToString(); 
    } 

    MessageBox.Show(lTest); 

} 

ответ

1

Попробуйте это:

var lTest = string.Join(", ", numDayOccurances.Select(e=>e.Key.ToString())); 
+2

+1, не совсем уверен, почему это было пресечено. Думаю, у downvoters есть оговорки о '.Select (e => e.Key.ToString())', так как это может быть 'numDayOccurances.Keys' – Habib

+0

@Habib thanks , потому что это не лучшее решение. Я пропустил перегрузку, получив «IEnumerable » (только что думал только «IEnumerable »). –

5

Вместо этого foreach используйте:

string lTest = String.Join(",", numDayOccurances.Keys); 
+0

'Ключи 'не IEnumerable

+1

@ AdrianCarneiro действительно? помните, что каждый элемент в 'Keys' имеет тип' DislayDay' –

+0

@KingKing, на самом деле это нормально, coz 'Join' принимает' params object [] 'как его параметры соединения, и те вызовут' ToString() 'just хорошо. – BeemerGuy

Смежные вопросы