Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
自定义比较词典linq_Linq_Dictionary - Fatal编程技术网

自定义比较词典linq

自定义比较词典linq,linq,dictionary,Linq,Dictionary,我有两本字典如下: 词典1: Dictionary<string, string> dict1 = new Dictionary<string, string>(); request.Add("key1", "value1"); request.Add("key2", "value2"); request.Add("key3", "value3"); Dictionary dict1=新字典(); 请求。添加(“键1”、“值1”); 请求。添加(“键2”、

我有两本字典如下:

词典1:

Dictionary<string, string> dict1 = new Dictionary<string, string>();

request.Add("key1", "value1");

request.Add("key2", "value2");    

request.Add("key3", "value3");
Dictionary dict1=新字典();
请求。添加(“键1”、“值1”);
请求。添加(“键2”、“值2”);
请求。添加(“键3”、“值3”);
词典2:

Dictionary<string, string> request = new Dictionary<string, string>();

request.Add("key1", "value1");

request.Add("key2", "value2");          
字典请求=新建字典();
请求。添加(“键1”、“值1”);
请求。添加(“键2”、“值2”);
我需要使用带条件的LINQ查询比较以上两个字典:

1) dict2中的所有键应与dict1中的键匹配

2) 匹配的键应具有等效值

3) 即使dict2中key2的值为空,它也应该匹配

感谢您的帮助。提前谢谢

问候,

Sachin

您可以使用,但更简单的方法是使用:

var dict1=新字典
{
{“key1”,“value1”},
{“key2”,“value2”},
{“key3”,“value3”}
};
var dict2=新字典
{
{“key1”,“value1”},
{“key2”,“value2”}
};
全部(k2=>
dict1.Any(k1=>k1.Key==k2.Key&&
(String.IsNullOrEmpty(k2.Value)| | k1.Value==k2.Value)))
我猜空的意思是
null
或空字符串,因此我使用了。如果只想检查
null
,请执行一个简单的
k2.Value==null

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