以下是我的C#课程:
public class myClass {
// Some properties irrelevant to the question
public List<someObject> ListOfStuff { get; set; }
}
public class someObject {
public string Id { get; set; }
public string Name { get; set; }
}
问题:是否可以将所有Id
提取到一个单独的数组中,将所有Name
提取到另一个单独的数组中?
例如,像这样:
myClass foo;
// Populate foo...
List<string> names = foo.ListOfStuff( what goes here? );
答案 0 :(得分:5)
您可以使用LINQ的Select
方法:
List<string> names = foo.ListOfStuff.Select(x => x.Name).ToList<string>();
List<string> ids = foo.ListOfStuff.Select(x => x.Id).ToList<string>();
答案 1 :(得分:3)
LINQ让这很容易:
var idArray = ListOfStuff.Select(item => item.Id).ToArray();
要获取名称数组,只需在Select()方法中更改您选择的属性。
答案 2 :(得分:2)
以下是完成您要执行的操作的linq查询:
IEnumerable<string> names = foo.ListOfStuff.Select(f => f.Name);
IEnumerable<string> IDs = foo.ListOfStuff.Select(f => f.Id);
如果您想将它们存储在List
中,那么只需将ToList()
添加到这些查询的末尾:
List<string> IDs = foo.ListOfStuff.Select(f => f.Id).ToList();
List<string> Names = foo.ListOfStuff.Select(f => f.Name).ToList();
答案 3 :(得分:2)
您可以使用LINQ来完成此任务,例如
List<string> names = foo.ListOfStuff.Select(x => x.Name).ToList();