4
List<string> selectedOptions;
Dictionary<string,string> masterList;
masterList
包括鍵,它們是用於selectedoptions
的值超集的。 現在,我想提取selectedOptions
和masterList
之間相交鍵的所有值。
LINQ查詢將如何構造?
List<string> selectedOptions;
Dictionary<string,string> masterList;
masterList
包括鍵,它們是用於selectedoptions
的值超集的。 現在,我想提取selectedOptions
和masterList
之間相交鍵的所有值。
LINQ查詢將如何構造?
IEnumerable<KeyValuePair<string,string>> results =
dic.Join(keys, d => d.Key, x => x, (a, b) => a);
或課程的
var results2 = keys.Select(k => new {key = k, value = dic[k]});
,但如果不存在鍵,這將炸彈。
你可以用Where(k => dic.ContainsKey(k))
條款解決這個問題:
var results3 = keys
.Where(k => dic.ContainsKey(k))
.Select(k => new {key = k, value = dic[k]});
拖網LINQ的源之後,我認爲最後的方法可能是最有效的。做一個聯合強制linq在聯接中涉及的一個集合上創建一個Lookup
(實際上是一個多項散列表)。鑑於我們已經有一個字典提供與Lookup
相同的查找性能,建立一個Lookup
是多餘的。
這不符合我的目的。我需要從字典中過濾匹配鍵的值。這仍然返回匹配的鍵。不知道我在解釋代碼時是否做了任何錯誤... – GilliVilla
@GilliVilla - results3返回一個包含鍵和值的列表,究竟是什麼問題? – Hogan
@Hogan你是對的。一切都很好。 – GilliVilla