2011-03-17 101 views
3

我試圖將此_valueAdds = List<ValueAddedItemHelper>轉換成gridItemsDictionary),其中_valueAdds是鍵,所有值都是false。但我不確定如何與Lamda做到這一點。這是我得到的下面。我沒有在while循環做成功,但想學會的Lamda做數組轉換爲字典

gridItems = new Dictionary<ValueAddedItemHelper, bool>(); 
gridItems = _valueAdds.Select(k => new { k }).ToArray().ToDictionary(t => t, false); 

回答

5
_valueAdds.ToDictionary(t => t, t => false); 
+0

對不起,我錯誤地編輯了你的答案。滾回來。 – 2011-03-17 11:11:52

1

您需要提供一個lambda表達式作爲第二個參數(或創建委託一些其他的方式,但lambda表達式將是最簡單的)。請注意,ToArray的調用不是必需的,也不是您要創建的空字典。只需使用:

gridItems = _valueAdds.Select(k => new { k }) 
         .ToDictionary(t => t, t => false); 

你爲什麼在這裏使用了一個匿名類型,雖然...特別是目前還不清楚給我,那不會ValueAddedItemHelper。你需要投影嗎?也許只是:

gridItems = _valueAdds.ToDictionary(t => t, t => false); 
+0

感謝您的解釋,我清楚地爲自己複雜的事情。 – Domitius 2011-03-17 13:18:40

0

您不需要ToArray()。ToDictionary()。你可以簡單地做一個ToDictionary()。而且你不需要第一行。第二行將創建並填充字典。

代碼:

gridItems = _valueAdds.ToDictionary(p => p, p => false); 
0

假設_valueAddsIEnumerable<ValueAddedItemHelper>你可以這樣做:

gridItems = _valueAdds.ToDictionary(x => x, x => false); 
0

喜歡的東西

var gridItems = _valueAdds.ToDictionary(k=>k,i=>false); 
0

Select(k => new { k })的問題;創建一個名爲k的屬性的匿名類型。只是:

var gridItems = _valueAdds.ToDictionary(t => t, t => false);