选择IEnumerable<;类>;转换为新的IEnumerable<;类别2>;

本文关键字:lt gt IEnumerable 类别 选择 转换 | 更新日期: 2023-09-27 18:21:32

我有一个这样的类:

public class MyClass
{
    public string Name { get; set; }
}

我还有第二个班:

public class SelectableItem
{
    public MyClass Item { get; set; }
    public bool Selected { get; set; }
}

我有一个MyClassIEnumerable列表,我想将该列表读取为SelectableItem;像这样的东西:

IEnumerable<MyClass> class1List = FillListWithStuff();
IEnumerable<SelectableItem> newList = { class1List.Where(p => p.Name == "test"), false};

使得newList包含class1List的所有元素,并且它们被标记为Selected = false

选择IEnumerable<;类>;转换为新的IEnumerable<;类别2>;

您需要一个Select,因为您没有执行任何过滤:

class1List.Select(x => new SelectableItem { Item = x, Selected = false });

对于那些喜欢查询语法的人:

var newList = from class1 in class1List
              select new SelectableItem { Item = class1 };

这当然会在编译到之前进行转换

var newList = class1List.Select(class1 => new SelectableItem { Item = class1 });

按照Selman22的回答。

使用Select并从第一个列表中的值中复制Item值,并将Selected设置为false。

IEnumerable<SelectableItem> newList = class1List.Select(x => new SelectableItem { Item = x.Item, Selected = false});