将IEnumerable <class>选择为新的IEnumerable <class2> </class2> </class>

时间:2014-09-11 08:09:24

标签: c# linq ienumerable

我有一个这样的课程:

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

我有第二堂课:

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

我有一个IEnumerable MyClass列表,我希望将该列表读入SelectableItem;像这样的东西:

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

因此newList包含class1List的所有元素,并将其标记为Selected = false

3 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:1)

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

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

这当然会在编译之前转换为

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

按照塞尔曼22的回答。

答案 2 :(得分:0)

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

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