查询键值对列表
Querying a list of key value pair
我已经创建了一个键值对列表,并且是一个 运行 查询来查找某个 ID 是否在列表中出现多次。 id 保存在 "Value" 部分。我正在使用以下代码,但不确定如何获取键值对的 "Value" 。查看行尾:
var result = tableIds
.GroupBy(v => v.Value)
.Where(c => c.Count() > 1)
.Select(x=> new KeyValuePair<string, string>(x.Key, ));
注意:tableIds 看起来像这样:
var tableIds = new List<KeyValuePair<string, string>>();
我基本上是想找到 "value" 中的 id 出现不止一次的地方。如果是这样,我需要存储键和值以备后用。如果 id 出现在多个地方,并且使用不同的密钥,我将需要捕获所有这些。
除了按值而不是键分组之外,还有其他问题:您期望单个值,而分组结果有多个值。不加入他们,你就无法 return 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));
试试这个
tableIds.GroupBy(v => v.Key).Where(c => c.Count() > 1).SelectMany(c=> c).ToList()
它returns每个KV对在tableId中具有相同Key的其他KV。
我已经创建了一个键值对列表,并且是一个 运行 查询来查找某个 ID 是否在列表中出现多次。 id 保存在 "Value" 部分。我正在使用以下代码,但不确定如何获取键值对的 "Value" 。查看行尾:
var result = tableIds
.GroupBy(v => v.Value)
.Where(c => c.Count() > 1)
.Select(x=> new KeyValuePair<string, string>(x.Key, ));
注意:tableIds 看起来像这样:
var tableIds = new List<KeyValuePair<string, string>>();
我基本上是想找到 "value" 中的 id 出现不止一次的地方。如果是这样,我需要存储键和值以备后用。如果 id 出现在多个地方,并且使用不同的密钥,我将需要捕获所有这些。
除了按值而不是键分组之外,还有其他问题:您期望单个值,而分组结果有多个值。不加入他们,你就无法 return 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));
试试这个
tableIds.GroupBy(v => v.Key).Where(c => c.Count() > 1).SelectMany(c=> c).ToList()
它returns每个KV对在tableId中具有相同Key的其他KV。