[英]Dictionary to List (C#)
這不是一個問題,但我很好奇是否有更好的方法。 基本上,我有一個字典,其中鍵是我創建的結構。 我需要做的是獲取密鑰中某個屬性的列表。 即在結構中我有一個名為'ID'的字段,我希望得到一個列表。 我現在正在做的是:
List<long> keys = new List<long>();
foreach(var key in dict.Keys)
{
keys.Add(key.ID);
}
這是有效的,但我只是想知道我是否錯過了一個更簡單的方法 - 起初我想也許ToList方法可以給一個參數,所以我可以在列表中指定我想要的結構部分,但它沒有'我似乎可以。
你們怎么改進這個?
您可以使用LINQ:
List<long> keys = dict.Keys.Select(k => k.ID).ToList();
在這里,您將ID傳遞給Select()
而不是ToList()
,並且只調用ToList()
將結果集合轉換為列表。
使用Linq:
var keys = dict.Keys.Select(p => p.ID).ToList();
使用List
一個構造函數
var keys = new List<long>(dict.Keys.Select(p => p.ID));
(構造函數接受IEnumerable<T>
,而Select
dict.Keys
顯然是這樣)
並使用AddRange
var keys = new List<long>();
keys.AddRange(dict.Keys.Select(p => p.ID));
一般來說,我們使用.Select
“of”Linq來解決問題。 顯然我們可以寫:
from p in dict.Keys select p.ID
代替
dict.Keys.Select(p => p.ID)
我會注意到AddRange
唯一有趣的區別:其他“方法”創建一個新的List
並填充它。 AddRange
添加到可能已有元素的預先存在的List
中。
使用linq將id作為列表返回:
List<long> result = dic.Select(x => x.Key.ID).ToList();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.