Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用linq将集合转换为字符串_C#_Linq - Fatal编程技术网

C# 使用linq将集合转换为字符串

C# 使用linq将集合转换为字符串,c#,linq,C#,Linq,我有一节课 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" } ); PersonL

我有一节课

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" } );
公共类人物
{
公共字符串名{get;set;}
公共字符串LastName{get;set;}
}
List PersonList=新列表();
添加(newperson(){FirstName=“aa”,LastName=“aa”});
添加(newperson(){FirstName=“bb”,LastName=“bb”});
我想使用Linq获取一个姓氏带有逗号分隔符的字符串,结果如下所示: AA,BB


谢谢,

如果您正在使用.NET 4:

string lastNames = string.Join(",", PersonList.Select(x => x.LastName));
如果您使用的是.NET 3.5:

string lastNames = string.Join(",", PersonList.Select(x => x.LastName)
                                              .ToArray());
string result = String.Join(", ",
    (from p in PersonList
     select p.LastName).ToArray());
string result = String.Join(", ", PersonList.Select(p => p.LastName).ToArray());
(基本上.NET4添加了一些额外的重载。)

您可以使用

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

要使用分隔符连接字符串项,可以使用

PersonList.Select(p => p.LastName).Aggregate((s1,s2) => s1 + ", " + s2);
在.NET 3.5及以下版本中,这将数组作为第二个参数,但在4.0中,它有一个重载,该重载采用
IEnumerable
,其中
T
在本例中是
字符串

有了这些信息,这是你想要的代码

对于.NET 3.5:

string lastNames = string.Join(",", PersonList.Select(x => x.LastName)
                                              .ToArray());
string result = String.Join(", ",
    (from p in PersonList
     select p.LastName).ToArray());
string result = String.Join(", ", PersonList.Select(p => p.LastName).ToArray());
对于.NET 4.0,您可以省略对ToArray的调用:

string result = String.Join(", ",
    from p in PersonList
    select p.LastName);
string result = String.Join(", ", PersonList.Select(p => p.LastName));
如果您想删除LINQ语法,只使用LINQ扩展方法,那么在该变体中有相同的方法:

对于.NET 3.5:

string lastNames = string.Join(",", PersonList.Select(x => x.LastName)
                                              .ToArray());
string result = String.Join(", ",
    (from p in PersonList
     select p.LastName).ToArray());
string result = String.Join(", ", PersonList.Select(p => p.LastName).ToArray());
对于.NET 4.0,您可以省略对ToArray的调用:

string result = String.Join(", ",
    from p in PersonList
    select p.LastName);
string result = String.Join(", ", PersonList.Select(p => p.LastName));
注意:上述3.5版本当然也适用于4.0,它们没有删除或替换旧方法,只是为典型情况添加了一个