我有两个词典如下:
词典1:
Dictionary<string, string> dict1 = new Dictionary<string, string>();
request.Add("key1", "value1");
request.Add("key2", "value2");
request.Add("key3", "value3");
词典2:
Dictionary<string, string> request = new Dictionary<string, string>();
request.Add("key1", "value1");
request.Add("key2", "value2");
我需要使用带条件的LINQ查询来比较以上两个词典:
1) dict2中的所有键都应与dict1中的键匹配
2)匹配的键应具有等效值
3)即使dict2中key2的值为空,也应匹配
上面的帮助表示赞赏。提前谢谢。
此致
萨钦
答案 0 :(得分:2)
您可以使用Contains
method and provide a custom IEqualityComparer
,但更简单的方法是使用Any()
:
var dict1 = new Dictionary<string, string>
{
{"key1", "value1"},
{"key2", "value2"},
{"key3", "value3"}
};
var dict2 = new Dictionary<string, string>
{
{"key1", "value1"},
{"key2", "value2"}
};
dict2.All(k2 =>
dict1.Any(k1 => k1.Key == k2.Key &&
(String.IsNullOrEmpty(k2.Value) || k1.Value == k2.Value)))
我猜 empty 你的意思是null
或空字符串,因此我使用了String.IsNullOrEmpty
。如果您只想检查null
,请改为使用简单k2.Value == null
。