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();