我有这段代码
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
权利1} p>
答案 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)
您可以使用GroupBy
和String.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("; ");
}