查询键值对的列表

本文关键字:列表 键值对 查询 | 更新日期: 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));