【问题标题】:Custom compare dictionaries linq自定义比较字典 linq
【发布时间】:2013-02-05 12:49:53
【问题描述】:

我有两个字典如下:

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

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

问候,

萨钦

【问题讨论】:

    标签: linq dictionary


    【解决方案1】:

    您可以使用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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-26
      • 2020-03-11
      • 2012-08-25
      • 2012-02-03
      相关资源
      最近更新 更多