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)
您需要一些 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)