Concat两个属性使用linq然后转换为逗号分隔的字符串

时间:2016-09-21 15:22:18

标签: c# asp.net linq

我有一个对象列表(人)

public class Person 
    {
        public virtual Guid         PersonID { get; set; }
        public virtual AnotherObj   ABCD     { get; set; }
        public virtual int          IdNum       { get; set; }
        public virtual string       FirstName   { get; set; }
        public virtual string       LastName    { get; set; }                 
    }

然后是我的清单:

List<Person> people = new List<Person>
...add a bunch of people....

现在我想得到一个逗号分隔的人物串,但是我想操纵它以便我有Person.FirstName +" "+ Person.LastName

我意识到我可以通过foreach来做到这一点。但我必须想象还有另一种方法,我仍然可以使用

string.Join(", ",people.Select(x=>...not sure what to do here).ToList())

4 个答案:

答案 0 :(得分:3)

你已经走在了正确的道路上。

string.Join(", ", people.Select(p => $"{p.FirstName} {p.LastName}"));

答案 1 :(得分:3)

假设结果应为:

"FirstName1 LastName1, FirstName2 LastName2, ..."

表达式应为:

string people = string.Join(",", people.Select(p => p.FirstName + " " + p.LastName));

答案 2 :(得分:3)

所以,你在哪里,你不知道该做什么&#34;是你为每个&#34;迭代&#34;放置你想要做的逻辑的地方。基本上

在您的示例中,您希望拥有Person.FirstName +" "+ Person.LastName,因为您已经说过实际上它与解决方案非常接近!

因此,当您在Select上执行List<People>时,您的x参数将保留您尝试使用的单个人的价值。

因此,让我们看看你有什么,然后将其改为LINQ如何理解它。

string.Join(", ",people.Select(x=>.ToList(x => Person.FirstName + " " + Person.LastName))

string.Join(", ",people.Select(x=>.ToList(x => x.FirstName + " " + x.LastName))

我所做的就是用Person替换x。这有点像对每个人说,在这个选择陈述中做以下几点。我希望这有帮助。祝你好运!

答案 3 :(得分:0)

如果添加属性:

public virtual string FullName { get {this.FirstName + " " this.LastName}; }

这会在其中连接名称。 String.Join成为:

string.Join(", ",people.Select(person=>person.FullName)