构建一个简单的Windows窗体,任务是将文件中的数据内容读入linq。一切都可以编译,这很好,问题是输出,将其包装在一个foreach中,并且一旦显示信息,而不是一次显示所有数据,而是单击OK一次一个地显示。
这很奇怪,因为它与其他代码不同,并且遵循相同的方法。这就是我在做什么。
为什么要一一显示结果?
foreach (var info in linqData)
{
MessageBox.Show(Convert.ToString(info.Count)+""+info.Line);
}
答案 0 :(得分:5)
StringBuilder sb=new StringBuilder();
foreach (var info in linqData)
{
sb.Append(info.Count);
sb.Append(";");
sb.Append(info.Line);
sb.Append(Environment.Newline);
}
MessageBox.Show(sb.ToString());
答案 1 :(得分:0)
请明确说明,问题是因为循环中有一个消息框
您可以使用 Linq
var info = linqData.Select(x => $"{x.Count} {x.Line}");
MessageBox.Show(string.Join(Environment.NewLine,info);
or和StringBuilder
var sb = new StringBuilder();
foreach (var info in linqData)
sb.AppendLine($"{xinfo.Count} {info.Line}");
MessageBox.Show(sb.ToString());
其他资源
将序列的每个元素投影为新形式。
连接指定数组的元素或a的成员 集合,在每个元素之间使用指定的分隔符或 成员。
$ - string interpolation (C# Reference)
$特殊字符将字符串文字标识为插值 串。插值字符串是可能包含以下内容的字符串文字 插值表达式。当插值字符串解析为 结果字符串,带有插值表达式的项目将替换为 表达式结果的字符串表示形式。此功能是 在该语言的C#6和更高版本中可用。
代表可变的字符串。
StringBuilder.AppendLine Method
追加默认的行终止符或指定字符串的副本 以及默认的行终止符,直到该实例的末尾。
获取为此环境定义的换行字符串。