组字符串值

时间:2016-08-03 13:47:53

标签: c# string stringbuilder

我有这段代码

var myBuilder = new StringBuilder();

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

var text = myBuilder;

并使用我获取此文本

  

AAA08 - BB08,AAA09 - BB09,AAA09 - BB10,

myList 会返回:

  

{Number =" AAA08",SecondNumber =" BB08" }

     

{Number =" AAA09",SecondNumber =" BB09" }

     

{Number =" AAA09",SecondNumber =" BB10" }

如何将其连接到字符串以显示:

  

AAA08 - BB08; AAA09 - BB09,BB10

我可以将,替换为;,但无法将这些Number分组以仅显示一个SecondNumber权利

4 个答案:

答案 0 :(得分: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);

答案 1 :(得分: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, ..)

答案 2 :(得分:0)

当您获得Number时,请遍历myList以查找Number的所有实例,然后获取每个对应的SecondNumber并将其附加到您的字符串中。

答案 3 :(得分:0)

在构建最终字符串之前,您可能需要先使用以下代码对数组进行分组: var groupedList = myList.GroupBy(x => x.Number) 然后使用该分组列表来获取正确的字符串:

foreach (var item in groupedList) 
{
    myBuilder.Append(item.Number).Append(" - ").Append(item.Select(x => x.SecondNumber).Join(", ")).Append("; ");
}