c# - 从列表中获取变量列表(使用 Linq?)

标签 c# linq list

有没有什么方法可以使用 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/

相关文章:

c# - 在主线程上执行异步任务的最佳方式

c# - .Net Core 2.2 中的 OData : how to get total number of items?

c# - SingleOrDefault 异常处理

c# - 将类的属性设置为函数的参数

list - 重构Dart中的 map 对象列表?

c++ - 在 C++ 中删除列表会导致崩溃

c# - 在 C# 中更改 DataTable 中的行的顺序

c# - 使用 lambda 从列表的另一个属性填充列表的属性?

python循环而不是递归

c# - Ajax.BeginForm 与 A​​SP.NET MVC 4 不调用 Controller 操作