使用 linq 将字典值转换为列表

问题描述 投票:0回答:3

以下代码给出“lambda 表达式的计算在调试器中无效”。 请从下面提出我做错的地方 -

List<MyFieldClass> lstFiedls;
lstFiedls = objDictionary.Select(item => item.Value).ToList();

谢谢,

c# linq list dictionary
3个回答
86
投票

您不需要使用 Linq 来获取值。

Dictionary(TKey, TValue)
有一个保存值的属性,
Dictionary(TKey, TValue).Values
:

var fields = objDictionary.Values.ToList();

5
投票

仅仅尝试使用

ToList()
:

将字典的值转换为列表就会出现编译器错误
Dictionary<int, int> dict = new Dictionary<int, int>();
var result = dict.Values.ToList();

除非您在文件中包含

using System.Linq


2
投票

使用 C# 7 可以使用元组,这使得转换更加简单,并且您可以在列表中同时拥有键和值。

   var mylist = new List<(Tkey, TValue)>(dic.Select(x => (Tkey, TValue)));

完整示例

       Dictionary<int, string> dic = new Dictionary<int, string>();
        dic.Add(1, "test1");
        dic.Add(2, "test2");
        dic.Add(3, "test3");

        
        var mylist = new List<(int, string)>(dic.Select(x => (x.Key, x.Value)));

        foreach (var myItem in mylist)
        {
            Console.WriteLine($"int val = {myItem.Item1} string = {myItem.Item2}");
        }

结果

int val = 1 string = test1
int val = 2 string = test2
int val = 3 string = test3
© www.soinside.com 2019 - 2024. All rights reserved.