1

我有两个字典如下:

词典 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的值为空,也应该匹配

对上面的帮助表示赞赏。提前致谢。

问候,

萨钦

4

1 回答 1

2

您可以使用该Contains方法并提供自定义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

于 2013-02-05T12:51:30.057 回答