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

假设我有以下课程:

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

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

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

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

如何使用 ConfigItemType.Name中的值作为参数字符串数组将 MyList放入到 listGoesHere中?

我相当肯定 Linq 能做到这一点... 。但是 MyList上没有 select方法(这是我会使用的方法)。

147403 次浏览

你要找的人

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

因为 Select是一个扩展方法,所以请确保通过添加

using System.Linq

你的文件-然后它将显示与智能感知。

这也应该有效:

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

我相当肯定 Linq 能做到这一点... 。但是 MyList 上没有 select 方法(我会使用这种方法)。

是的,LINQ 可以做到这一点。它很简单:

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

最有可能的问题是,您要么没有对 System.Core的引用,要么缺少对 System.Linqusing指令。

对于每一个被困在。NET 2.0,像我一样,尝试以下方法(适用于 OP 中的示例) :

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

其中 配置文件列表是您的列表变量。