使用 LINQ 将集合转换为字符串

23

我有一个类

public class Person
{
    public string FirstName { get; set; }
    public string LastName { get; set; }   
}

List<Person> PersonList = new List<Perso>();
PersonList.Add(new Person() { FirstName = "aa", LastName = "AA" } );
PersonList.Add(new Person() { FirstName = "bb", LastName = "BB" } );

我想使用Linq获取一个以逗号分隔的LastName字符串,结果应该如下所示: AA,BB

谢谢。

3个回答

59

如果你正在使用.NET 4:

string lastNames = string.Join(",", PersonList.Select(x => x.LastName));

如果你正在使用.NET 3.5:

string lastNames = string.Join(",", PersonList.Select(x => x.LastName)
                                              .ToArray());

(基本上,.NET 4 添加了一些额外的重载到 string.Join。)


10
您可以使用

标签。

PersonList.Select(p => p.LastName).Aggregate((s1,s2) => s1 + ", " + s2);

8
为了连接带分隔符的字符串项,您可以使用String.Join
在.NET 3.5及以下版本中,它采用数组作为第二个参数,但在4.0中,它具有一个重载,它采用IEnumerable<T>,其中,T在这种情况下是String
掌握这些信息后,这就是您需要的代码。
对于.NET 3.5:
string result = String.Join(", ",
    (from p in PersonList
     select p.LastName).ToArray());

对于 .NET 4.0 版本,您可以省略对 ToArray 的调用:

string result = String.Join(", ",
    from p in PersonList
    select p.LastName);

如果您想放弃使用LINQ语法,只使用LINQ扩展方法,下面是相同代码的变形:

对于.NET 3.5:

string result = String.Join(", ", PersonList.Select(p => p.LastName).ToArray());

对于.NET 4.0,您可以省略对ToArray的调用:

string result = String.Join(", ", PersonList.Select(p => p.LastName));

注意:3.5及以上版本当然也适用于4.0,它们并没有删除或替换旧方法,只是为典型情况添加了一个新方法。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接