[英]Querying a list of key value pair
我創建了一個鍵值對列表,並正在運行查詢以查找ID是否在列表中多次出現。 該ID保留在“值”部分。 我正在使用以下代碼,但不確定如何獲取鍵值對的“值”。 參見行尾:
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>>();
我基本上想查找“值”中的ID在哪里出現多次。 如果是這樣,我需要存儲鍵和值以供以后使用。 如果id在幾個地方使用不同的密鑰出現,我將需要捕獲所有這些。
除了將值分組而不是對鍵分組外,還有其他問題:您期望一個值,而分組的結果具有多個值。 如果不加入它們,則無法返回KeyValuePair<string, string>
的可枚舉。
如果您只想擁有任何值,請使用First()
:
.Select(x=> new KeyValuePair<string, string>(x.Key, x.First().Key));
請注意,您x.Key
在lambda實際上是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()
它返回tableId中具有相同鍵的其他KV的每個KV對。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.