C#將Dictionary轉(zhuǎn)換成List的常見方式
在 C# 中,將Dictionary<TKey, TValue>轉(zhuǎn)換為List的方式取決于你需要List中存儲的內(nèi)容(鍵、值、鍵值對,或自定義類型)。以下是常見的轉(zhuǎn)換方式:
1. 轉(zhuǎn)換為包含鍵值對的List<KeyValuePair<TKey, TValue>>
Dictionary<TKey, TValue>本身實現(xiàn)了IEnumerable<KeyValuePair<TKey, TValue>>接口,可直接通過 LINQ 的ToList()方法轉(zhuǎn)換為包含所有鍵值對的List。
示例代碼:
using System;
using System.Collections.Generic;
using System.Linq; // 需引用此命名空間以使用ToList()
class Program
{
static void Main()
{
// 定義一個Dictionary
Dictionary<string, int> dict = new Dictionary<string, int>
{
{"蘋果", 5},
{"香蕉", 3},
{"橙子", 7}
};
// 轉(zhuǎn)換為包含鍵值對的List
List<KeyValuePair<string, int>> kvpList = dict.ToList();
// 遍歷結(jié)果
foreach (var item in kvpList)
{
Console.WriteLine($"鍵:{item.Key},值:{item.Value}");
}
}
}
2. 轉(zhuǎn)換為僅包含鍵的List
通過Dictionary的Keys屬性(返回所有鍵的集合),再調(diào)用ToList()轉(zhuǎn)換為鍵的List。
示例代碼:
// 轉(zhuǎn)換為僅包含鍵的List
List<string> keysList = dict.Keys.ToList();
// 遍歷鍵
foreach (var key in keysList)
{
Console.WriteLine("鍵:" + key); // 輸出:蘋果、香蕉、橙子
}
3. 轉(zhuǎn)換為僅包含值的List
通過Dictionary的Values屬性(返回所有值的集合),再調(diào)用ToList()轉(zhuǎn)換為值的List。
示例代碼:
// 轉(zhuǎn)換為僅包含值的List
List<int> valuesList = dict.Values.ToList();
// 遍歷值
foreach (var value in valuesList)
{
Console.WriteLine("值:" + value); // 輸出:5、3、7
}
4. 轉(zhuǎn)換為自定義類型的List
如果需要將鍵和值封裝到自定義類中,可通過Select投影后再轉(zhuǎn)換為List。
示例代碼:
// 定義自定義類
public class Fruit
{
public string Name { get; set; } // 對應Dictionary的鍵
public int Count { get; set; } // 對應Dictionary的值
}
// 轉(zhuǎn)換為自定義類型的List
List<Fruit> fruitList = dict.Select(kv => new Fruit
{
Name = kv.Key,
Count = kv.Value
}).ToList();
// 遍歷自定義類型列表
foreach (var fruit in fruitList)
{
Console.WriteLine($"水果:{fruit.Name},數(shù)量:{fruit.Count}");
}
注意事項
需引用System.Linq命名空間(using System.Linq;),否則ToList()方法無法使用。
轉(zhuǎn)換后的List是原Dictionary中元素的副本(淺拷貝),修改List中的元素不會影響原Dictionary(但如果是引用類型,修改內(nèi)部屬性會同步)。
以上就是C#將Dictionary轉(zhuǎn)換成List的常見方式的詳細內(nèi)容,更多關于C# Dictionary轉(zhuǎn)換List的資料請關注腳本之家其它相關文章!
相關文章
C#使用Datatable導入sqlserver數(shù)據(jù)庫的三種方法
本文主要介紹了C#使用Datatable導入sqlserver數(shù)據(jù)庫的三種方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2024-08-08
詳解C# 利用反射根據(jù)類名創(chuàng)建類的實例對象
這篇文章主要介紹了詳解C# 利用反射根據(jù)類名創(chuàng)建類的實例對象,“反射”其實就是利用程序集的元數(shù)據(jù)信息,感興趣的小伙伴們可以參考一下。2017-03-03
c# socket心跳超時檢測的思路(適用于超大量TCP連接情況下)
這篇文章主要介紹了c# socket心跳超時檢測的思路(適用于超大量TCP連接情況下),幫助大家更好的理解和學習使用c#,感興趣的朋友可以了解下2021-03-03

