有没有什么方法可以使用 linq 之类的东西将这个 getter 减少到大约一行?我做了一个搜索,但没有找到任何东西。只是好奇。
private List<UserItem> userItems
{
get
{
List<UserItem> list = new List<UserItem>();
foreach (var item in items) {
list.Add(item.UserItem);
}
return list;
}
}
最佳答案
简单地:
get {
return items.Select(x => x.UserItem).ToList();
}
Select
的 MSDN 链接:http://msdn.microsoft.com/en-us/library/bb548891(v=vs.110).aspx
基本上,它将您想要的内容转换到一个新列表中。在上面的示例中,我们将 items
集合中对象的每个 UserItem
属性投影到一个列表中。
编辑:
8 年后......现在可以进一步简化它,因为属性可以是表达式体。
private List<UserItem> UserItems => items.Select(x => x.UserItem).Tolist();
关于c# - 从列表中获取变量列表(使用 Linq?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21124693/