说我有以下课程:
public class ConfigItemType
{
public string Name { get; set; }
public double SomeOtherThing { get; set; }
}
然后我列出了以下类(List<ConfigItemType> MyList
)
现在我有一个带有以下签名的方法:
void AggregateValues(string someUnrelatedValue, params string[] listGoesHere)
如何使用MyList
中的值作为params字符串数组,将listGoesHere
放入ConfigItemType.Name
?
我很确定Linq可以做到这一点....但是MyList
没有select
方法(我会用它)。
答案 0 :(得分:246)
您正在寻找
MyList.Select(x=>x.Name).ToArray();
由于Select
是扩展方法,因此请务必通过添加
using System.Linq
到您的文件 - 然后它将显示Intellisense。
答案 1 :(得分:18)
我很确定Linq可以做到这一点......但MyList上没有select方法(这就是我应该使用的方法)。
是的,LINQ可以做到这一点。这很简单:
MyList.Select(x => x.Name).ToArray();
问题很可能是您没有System.Core
的引用,或者您错过了using
的{{1}}指令。
答案 2 :(得分:6)
这也应该有效:
AggregateValues("hello", MyList.ConvertAll(c => c.Name).ToArray())
答案 3 :(得分:5)
对于像我一样坚持使用.NET 2.0的每个人,请尝试以下方式(适用于OP中的示例):
ConfigItemList.ConvertAll<string>(delegate (ConfigItemType ci)
{
return ci.Name;
}).ToArray();
其中 ConfigItemList 是您的列表变量。