【发布时间】:2020-12-17 22:36:51
【问题描述】:
我正在创建一个键值对列表。
var myList = new List<KeyValuePair<string, int>>();
myList.Add(new KeyValuePair<string, int>("A", 1));
myList.Add(new KeyValuePair<string, int>("B", 2));
myList.Add(new KeyValuePair<string, int>("A", 1));
myList.Add(new KeyValuePair<string, int>("C", 3));
myList.Add(new KeyValuePair<string, int>("A", 5));
myList.Add(new KeyValuePair<string, int>("X", 9));
myList.Add(new KeyValuePair<string, int>("Z", 7));
我想通过键值对的键找出这个列表的索引。 因此,A 的索引为 0,2 和 4,Z 的索引为 6。
要查找只存在一次的索引,我可以执行以下操作..
int o = myList.IndexOf((from val in myList where val.Key == "Z" select val).SingleOrDefault());
但是如何获取 val.Key == "A" 的索引。
有人建议我查看Get indexes of all matching values from list using Linq 的问题并结束我的问题,尽管我的问题是关于键值对列表和上述关于字符串列表的问题......
基于我尝试失败..
var result = Enumerable.Range(0, myList.Count)
.Where(kvp => kvp.Key == "A")
.ToList();
和
var result1 = myList.Select((x, i) => new {x, i})
.Where(x => x.Key == "A")
.Select(x => x.i);
收到的错误:
编译错误:“int”不包含“Key”的定义,并且找不到接受“int”类型的第一个参数的扩展方法“Key”(您是否缺少 using 指令或程序集引用?) 编译错误:“AnonymousType#1”不包含“Key”的定义,并且找不到接受“AnonymousType#1”类型的第一个参数的扩展方法“Key”(您是否缺少 using 指令或程序集引用? )
非常感谢人们回答问题或允许其他人回答而不是关闭它们..
【问题讨论】:
-
要一行行吗?
-
一行很棒.. 多条也行.. Tx..
-
为什么不用字典呢?
标签: c#