将对象列表转换为对象属性之一的数组
假设我有以下课程:
public class ConfigItemType { public string Name { get; set; } public double SomeOtherThing { get; set; } }
然后我列出以下类( List<ConfigItemType> MyList
)
现在我有一个具有以下签名的方法:
void AggregateValues(string someUnrelatedValue, params string[] listGoesHere)
我怎么能适合listGoesHere
到listGoesHere
使用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.Linq
的using
指令。
这也应该工作:
AggregateValues("hello", MyList.ConvertAll(c => c.Name).ToArray())
对于.NET 2.0的所有人,像我一样,尝试以下方法(适用于OP中的示例):
ConfigItemList.ConvertAll<string>(delegate (ConfigItemType ci) { return ci.Name; }).ToArray();
ConfigItemList是你的列表variables。