选择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; }
}
我有一个MyClass
的IEnumerable
列表,我想将该列表读取为SelectableItem
;像这样的东西:
IEnumerable<MyClass> class1List = FillListWithStuff();
IEnumerable<SelectableItem> newList = { class1List.Where(p => p.Name == "test"), false};
使得newList
包含class1List
的所有元素,并且它们被标记为Selected = false
。
您需要一个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});