C# 将linq查询结果转换为字符串?
我有一个简单的课程:C# 将linq查询结果转换为字符串?,c#,.net,linq,C#,.net,Linq,我有一个简单的课程: class A { public string Name { get; set; } public int Age { get; set; } } 我有一本字典: Dictionary dic=newdictionary() 在这里,我以可见的方式看到所有项目: Console.WriteLine(dic.Select(f=>f.Key+“=>”+f.Value.Age+“”+f.Value.Name)) 输出: a =>2 aa b =&
class A
{
public string Name { get; set; }
public int Age { get; set; }
}
我有一本字典:
Dictionary dic=newdictionary()代码>
在这里,我以可见的方式看到所有项目:
Console.WriteLine(dic.Select(f=>f.Key+“=>”+f.Value.Age+“”+f.Value.Name))代码>
输出:
a =>2 aa
b =>3 baa
c =>4 caa
但我希望它像一根绳子
类似于以下字符串值:
@"a =>2 aa \n
b =>3 baa \n
c =>4 caa ";
我可以用ToArray和string来做。join:
var t=dic.Select(f=>f.Key+" =>"+f.Value.Age+" "+f.Value.Name);
Console.WriteLine (String.Join("\n",t.ToArray() ));
但我相信有更好(更短、优雅)的方法
使用以下语句:(添加一点内容)
dic.选择(f=>f.Key+“=>”+f.Value.Age+“”+f.Value.Name)
有什么帮助吗?您的解决方案很好,我唯一能摆脱的就是调用ToArray
,所以
Console.WriteLine (String.Join("\n",t ));
或
你可以用
或者使用StringBuilder
string s = dic.Aggregate(new StringBuilder(),
(current, f) =>
current.AppendLine(
String.Format("{0} => {1} {2}",
f.Key,
f.Value.Age,
f.Value.Name))
.ToString();
我想我被误解了:-(……假设我没有字符串。join……。Linq的select正在迭代。我想在迭代时,将一个值累积到一个字符串。@RoyiNamir,你说(更短,优雅),IMO,string。join更短,优雅。就迭代而言,任何其他选项都会涉及迭代,无论是隐藏的还是隐藏的(在选择的情况下)或其他。你是对的。我不应该说那些话。我只是想通过枚举学习字符串的累积,而不是使用外部函数,如tolist、string.join。
Console.WriteLine (String.Join(Environment.NewLine, t));
string s = dic.Aggregate(String.Empty,
(current, f) =>
String.Format("{0}\n{1} => {2} {3}",
current,
f.Key,
f.Value.Age,
f.Value.Name))
.TrimStart();
string s = dic.Aggregate(new StringBuilder(),
(current, f) =>
current.AppendLine(
String.Format("{0} => {1} {2}",
f.Key,
f.Value.Age,
f.Value.Name))
.ToString();