2014-09-11 103 views
1

我有一類像這樣:選擇一個IEnumerable <Class>到一個新的IEnumerable <Class2>

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

回答

3

你需要一個Select因爲你沒有執行任何篩選:

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

我只是寫這個)) – 2014-09-11 08:11:51

+3

你甚至不需要明確地將'Selected'分配給'false'。 – 2014-09-11 08:12:47

+0

謝謝 - 不記得確切的語法 – 2014-09-11 08:12:58

0

使用選擇由該值在第一個列表複製的項目值,並設置選擇爲false。

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

對於那些誰喜歡查詢語法:

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

這當然會在編譯之前被轉換成

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

按Selman22的答案。

相關問題