将对象列表转换为对象属性之一的数组

假设我有以下课程:

public class ConfigItemType { public string Name { get; set; } public double SomeOtherThing { get; set; } } 

然后我列出以下类( List<ConfigItemType> MyList

现在我有一个具有以下签名的方法:

 void AggregateValues(string someUnrelatedValue, params string[] listGoesHere) 

我怎么能适合listGoesHerelistGoesHere使用ConfigItemType.Name的值作为paramsstring数组?

我相当肯定Linq可以做到这一点….但MyList没有select方法(这是我会用)。

你正在寻找

 MyList.Select(x=>x.Name).ToArray(); 

由于Select是扩展方法,因此请确保通过添加a来添加该名称空间

using System.Linq

到您的文件 – 然后它会显示与智能感知。

我相当肯定Linq可以做到这一点….但MyList没有select方法(这是我会用)。

是的,LINQ可以做到这一点。 这只是:

 MyList.Select(x => x.Name).ToArray(); 

最有可能的问题是你没有对System.Core的引用,或者你缺lessSystem.Linqusing指令。

这也应该工作:

 AggregateValues("hello", MyList.ConvertAll(c => c.Name).ToArray()) 

对于.NET 2.0的所有人,像我一样,尝试以下方法(适用于OP中的示例):

 ConfigItemList.ConvertAll<string>(delegate (ConfigItemType ci) { return ci.Name; }).ToArray(); 

ConfigItemList是你的列表variables。