加入字符串列表

时间:2013-12-13 14:45:26

标签: c# asp.net linq

我有一个包含另一个对象集合的对象。集合对象有2个属性,两个属性都是字符串。

例如:

public class Department
{
    List<Person> People{get;set};
}

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

基本上我只想在逗号分隔的列表中呈现名称,以便它们显示如下:

John Smith,
Fred Smith
etc...

有没有办法用Linq做到这一点?我尝试过使用Aggregate方法,如下所示:

<asp:Label ID="Label1" runat="server"  Text='<%# Department.People.Select (x=>x.FirstName).Aggregate((x,y) => x + ",<br>" + y) : "" %>'></asp:Label> 

这适用于1个字符串,即名字,但是当想要包含第二个字符串,即LastName

时,它无法工作

提前致谢

4 个答案:

答案 0 :(得分:4)

使用SelectString.Join

var people = department.People.Select(p => string.Format("{0} {1}",
                                  p.FirstName, p.LastName));
string result = string.Join(",<br>", people);

请注意,我不会在ASP.NET中使用<br>,而是使用ListBoxRepeater等适当的控件。但这是另一个问题。

答案 1 :(得分:2)

在代码中使用string.Join,如:

Label1.Text = string.Join(",<BR />", 
                     Department.People.Select(r=> r.FirstName + " " + r.LastName));

或在ASPX中

Text='<%# string.Join(",<BR />", 
                         Department.People.Select(r=> r.FirstName + " " + r.LastName)) %>'

答案 2 :(得分:1)

只需在选择

中进行连续
x=>x.FirstName + " " + x.LastName

答案 3 :(得分:0)

using System.Linq;

Department data = ...something...;
var names = string.Join(
    ", ",
    data.People.Select(x => string.Format("{0} {1}", x.FirstName, x.LastName))
);