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,它们没有删除或替换旧方法,只是为典型情况添加了一个