gpt4 book ai didi

c# - 将 linq 查询结果连接到字符串?

转载 作者:行者123 更新时间:2023-12-03 19:09:15 25 4
gpt4 key购买 nike

我有这个简单的类:

class A
{
public string Name { get; set; }
public int Age { get; set; }
}

我有一本字典:

Dictionary<string,A> dic = new Dictionary<string,A>();

dic["a"]=new A(){ Age=2, Name="aa"};
dic["b"]=new A(){ Age=3, Name="baa"};
dic["c"]=new A(){ Age=4, Name="caa"};

在这里,我以可见的方式看到了所有项目:

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.Select(f=>f.Key+" =>"+f.Value.Age+" "+f.Value.Name)

有什么帮助吗?

最佳答案

您可以使用 Aggregate Extension Method

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

或者使用 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();

关于c# - 将 linq 查询结果连接到字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16773723/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com