查询键值对的列表
本文关键字:列表 键值对 查询 | 更新日期: 2023-09-27 18:27:47
我创建了一个键值对列表,并正在运行一个查询,以查找id是否在列表中出现多次。id保存在"Value"部分。我正在使用以下代码,但不确定如何获得键值对的"Value"。见行末:
var result = tableIds
.GroupBy(v => v.Value)
.Where(c => c.Count() > 1)
.Select(x=> new KeyValuePair<string, string>(x.Key, ));
注意:表ID看起来像这样:
var tableIds = new List<KeyValuePair<string, string>>();
我基本上是想找到"值"中的id不止一次出现在哪里。如果是,我需要存储密钥和值,以便以后使用。如果id用不同的密钥出现在几个地方,我需要捕获所有这些。
试试这个
tableIds.GroupBy(v => v.Key).Where(c => c.Count() > 1).SelectMany(c=> c).ToList()
它返回表Id中具有相同Key的其他KV的每个KV对。
除了根据值而不是键进行分组之外,还有其他错误:您期望一个值,而分组的结果有多个值。如果不加入它们,就不能返回KeyValuePair<string, string>
的枚举值。
如果您只想有任何值,请使用First()
:
.Select(x=> new KeyValuePair<string, string>(x.Key, x.First().Key));
请注意,lambda中的x.Key
实际上是v.Value
。因此,令人困惑的Key
的双重使用是有意的。如果您打算在密钥上分组,请使用以下内容:
var result = tableIds
.GroupBy(v => v.Key)
.Where(c => c.Count() > 1)
.Select(x=> new KeyValuePair<string, string>(x.Key, x.First().Value));