我有以下问题:
public class AwesomeClass
{
public string SomethingCool { get; set; }
public string SomethingUseless { get; set; }
}
我有一个包含许多属性的类,我需要将这些类的列表转换为字符串列表,其中字符串表示类中的属性。
List<AwesomeClass> stuff = new List<AwesomeClass>();
//Fill the stuff list with some tings.
List<string> theCoolStuff = //Get only the SomethingCool property in the AwesomeClass list.
我之所以需要将其转换为字符串列表是因为我有一个方法将List作为参数,但SomethingCool属性包含了此列表所需的数据。
注意:我可以在列表中使用 foreach 循环并填充字符串列表,但我正在寻找更优雅的方法,也许LINQ可以为我做这个?
答案 0 :(得分:13)
您只需使用Select
:
var theCoolStuff = stuff.Select(x => x.SomethingCool).ToList();
Select
所做的是投影,它投影每个项目并将它们转换(不转换)为另一种形式。
答案 1 :(得分:3)
请注意,您甚至可以:
List<string> theCoolStuff = stuff.ConvertAll(x => x.SomethingCool);
因为List<T>
有一种特殊的“转化”方法: - )
答案 2 :(得分:0)
foreach (AwesomeClass member in stuff)
{
theCoolStuff.Add(member. SomethingCool)
}