使用 LINQ 表达式获取多个嵌套字典除外

Muh*_*ran 5 .net c# linq lambda dictionary

我想使用lambda表达式获得 n 个不同的字典:

Dictionary<string, string> d1 = new Dictionary<string, string>();
d1.Add("Joe", "2, Barfield Way");
d1.Add("Mike", "17, Apollo Avenue");
d1.Add("Jane", "69, Lance Drive");


Dictionary<string, string> d2 = new Dictionary<string, string>();
d2.Add("Joe", "2, Barfield Way");
d2.Add("Jane", "69, Lance Drive");
// var diff = d1.Except(d2);
Run Code Online (Sandbox Code Playgroud)

假设我想获得上述两个词典的差异 var diff = d1.Except(d2);

现在我想对N字典的数量使用 lambda 表达式得到同样的结果。

一瞬间,我将两本词典合二为一。我想使用lambda表达式或任何其他LINQ表达式来获取两个字典的差异。

Dictionary<string, Dictionary<string, string>> d = new Dictionary<string, Dictionary<string, string>>();
d.Add("Test", d1);
d.Add("Test2", d2);
Run Code Online (Sandbox Code Playgroud)

我尝试了下面的表达式,但没有得到任何结果。

d.Select(c => c.Value.Except(c.Value))
Run Code Online (Sandbox Code Playgroud)

Sal*_*ari 4

您需要一些 Linq 方法:

var result = d.SelectMany(d => d.Value).GroupBy(c => c.Key)
              .Where(c => c.Count() == 1).ToDictionary(t => t.Key, t => t.Select(c => c.Value)
              .FirstOrDefault()).ToList();
Run Code Online (Sandbox Code Playgroud)