2016-08-03 13 views
3

が、私はこのコードグループ文字列が

var myBuilder = new StringBuilder(); 

foreach (var item in myList) 
{ 
    myBuilder.Append(item.Number).Append(" - ").Append(item.SecondNumber).Append(", "); 
} 

var text = myBuilder; 

と、私はこのテキスト

AAA08取得していますことを使用した値、BB10を

myListはこれを返します。

{数= "AAA08"、SecondNumber = "BB08"}

{数= "AAA09"、SecondNumber = "BB09"}

{数= "AAA09"、SecondNumber = "BB10" }

は、どのように私はこの表示する文字列に連結することができます

AAA08 - BB08を。 AAA09 - BB09、BB10

私は;から,を置き換える行うことができますが、これらNumberは一つだけを表示する方法へのグループ取得することはできませんし、右彼に各SecondNumber

+0

@FirstStepのマイリストからリストを返すクエリですデータベース。それは複雑で、その質問とは関係がありません。 myListから返されるコードを提供しました。 – gsiradze

答えて

4

あなたは、LINQのとstring.Joinでこれを行うことができます

var grouped = myList 
    .GroupBy(x => x.Number) 
    .Select(g => g.Key + " - " + string.Join(", ", g.Select(x => x.SecondNumber))) 
var text = string.Join("; ", grouped); 
2

を使用できGroupByString.Join

var groupedNumbers= myList 
    .GroupBy(x => x.Number) 
    .Select(g => $"{g.Key} - {String.Join(", ", g.Select(x => x.SecondNumber))}"); 
string result = String.Join("; ", groupedNumbers); 

私はC#6の機能である文字列補間を使用しています。使用しない場合は、$"{g.Key}..."String.Format("{0}...", g.Key, ..)に置き換えてください。あなたがNumberを取得すると

0

は、その後、対応する各SecondNumberを取得し、それを文字列に追加し、Numberのすべてのインスタンスを見つけるためにmyListを反復します。適切な文字列を取得するには、リストをグループ化し var groupedList = myList.GroupBy(x => x.Number) 、後で使用:

0

最終文字列を構築する前に、あなたはおそらく、このコードで最初のグループにあなたの配列が必要になります

foreach (var item in groupedList) 
{ 
    myBuilder.Append(item.Number).Append(" - ").Append(item.Select(x => x.SecondNumber).Join(", ")).Append("; "); 
} 
関連する問題