C#:将成员变量放入列表中

Dav*_*vid 1 c# list

假设我有一个方法接受IList或类似的东西作为参数:

public void JiggleMyList(IList<string> list)...
Run Code Online (Sandbox Code Playgroud)

有一种简单的方法可以传递对象列表的字符串成员吗?

我的意思是,例如,如果我有一个Person对象列表,它暴露了一个名为FullName的字符串属性,是否有一种快速的方法将所有Person对象的FullNames填充到方法参数中,或者我是否必须创建一个新的List并遍历Person对象:

List<string> fullNames = new List<string>;
foreach (Person person in people)
{
  fullNames.Add(person.FullName);
}
JiggleMyList(fullNames);
Run Code Online (Sandbox Code Playgroud)

我总是遇到这种情况,如果有一条捷径,那就太好了.

非常感谢

大卫

Tom*_*cek 9

如果您使用的是.NET 3.5,那么可以使用LINQ编写:

JiggleMyList(people.Select(p => p.FullName).ToList());
Run Code Online (Sandbox Code Playgroud)

Select方法采用lambda表达式,该表达式用于将每个对象从源集合转换为某个新值,并将这些新值收集到IEnumerablt<T>类型中.该ToList扩展方法转换这List<T>.

或者,您可以使用查询语法编写相同的内容:

JiggleMyList((from p in people select p.FullName).ToList());
Run Code Online (Sandbox Code Playgroud)

.NET 2.0(C#2.0)中也提供了类似的功能,您可以使用匿名委托代替(更优雅的)lambda表达式:

JiggleMyList(people.ConvertAll(delegate (Person p) { return p.FullName; }));
Run Code Online (Sandbox Code Playgroud)