我有一个对象列表(人)
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())
答案 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)