以下代码给出“lambda 表达式的计算在调试器中无效”。 请从下面提出我做错的地方 -
List<MyFieldClass> lstFiedls;
lstFiedls = objDictionary.Select(item => item.Value).ToList();
谢谢,
您不需要使用 Linq 来获取值。
Dictionary(TKey, TValue)
有一个保存值的属性,Dictionary(TKey, TValue).Values
:
var fields = objDictionary.Values.ToList();
仅仅尝试使用
ToList()
: 将字典的值转换为列表就会出现编译器错误
Dictionary<int, int> dict = new Dictionary<int, int>();
var result = dict.Values.ToList();
除非您在文件中包含
using System.Linq
。
使用 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