2010-10-19 62 views
64

嘗試將字典轉換爲列表時遇到問題。將字典轉換爲C#中的列表集合

示例如果我有字典與模板字符串作爲鍵和字符串作爲值。然後我希望將字典鍵轉換爲字符串列表集合。

Dictionary<string, string> dicNumber = new Dictionary<string, string>(); 
List<string> listNumber = new List<string>(); 

dicNumber.Add("1", "First"); 
dicNumber.Add("2", "Second"); 
dicNumber.Add("3", "Third"); 

// So the code may something look like this 
//listNumber = dicNumber.Select(??????); 
+5

您是否要求提供詞典中的鍵列表?如果是這樣的話,就會有一個字典上的Keys屬性,它會給你。 – 2010-10-19 12:59:19

回答

123

將密鑰轉換爲自己的名單:

listNumber = dicNumber.Select(kvp => kvp.Key).ToList(); 

或者你也可以縮短它起來,甚至沒有打擾使用選擇:

listNumber = dicNumber.Keys.ToList(); 
+0

@布賴恩 - 我在編輯中到達那裏。我想先顯示select方法,因爲這是OP詢問的內容,然後顯示替代方法。 :-) – 2010-10-19 13:00:41

+0

所以我想通了,所以我刪除了我的評論。 – 2010-10-19 13:01:30

+1

這真的很有幫助。我需要在返回鍵之前將.Where(...)應用於字典,但該方法不返回字典,因此我無法訪問Keys屬性。使用此選擇後,在哪裏工作很好 – 2011-08-16 00:41:35

12

如果你想使用LINQ的,那麼你可以使用下面的代碼片段:

var listNumber = dicNumber.Keys.ToList(); 
4
foreach (var item in dicNumber) 
{ 

    listnumber.Add (item.Key); 

} 
+0

爲什麼不在最後:) – 2014-01-16 14:16:08

17

或者:

var keys = new List<string>(dicNumber.Keys); 
+1

使用.NET Compact Framework 2.0(所以沒有Linq)這是我的最佳選擇。 – 2015-07-22 18:45:50

3

如果妳想要字典領取鑰匙傳遞到一個方法參數。

List<string> lstKeys = Dict.Keys; 
Methodname(lstKeys); 
------------------- 
void MethodName(List<String> lstkeys) 
{ 
    `enter code here` 
    //Do ur task 
} 
3

如果你想轉換鍵:

List<string> listNumber = dicNumber.Keys.ToList(); 

否則,如果宥想轉換值:

List<string> listNumber = dicNumber.Values.ToList(); 
-1
class NumberClass { 
    int Digits { get; set; } 
    string Chars { get; set; } 
    string CharsLower { get; set; } 
} 

var dicNumber = new Dictionary<string, string> { 
    {"1", "First"}, 
    {"2", "Second"}, 
    {"3", "Third"} 
} 

var listNumber = dicNumber.Select(number => new NumberClass { 
    Digits = Convert.ToInt32(number.Key), 
    Chars = number.Value, 
    CharsLower = number.Value.ToLower() 
}).ToList(); 

listnumber的是一個清單NumberClass-ES,其中第一記錄 數字等於1,字符等於「第一」,字符下角等於「第一」