2013-02-05 72 views
1

我有两个字典如下:自定义词典比较LINQ

字典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中的所有键应垫CH与dict1

2)键匹配的键应该具有相等的值

3)即使KEY2在dict2的值是空时,它应当匹配

上面说明在赞赏。提前致谢。

问候,

萨钦

回答

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))) 

我猜你的意思是null或空字符串,因此我使用String.IsNullOrEmpty。如果您想要检查null,请改为使用简单的k2.Value == null

+0

谢谢!这工作太! – hegdesachin