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

标签 c# .net linq dictionary lambda

我想使用 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);

假设我想获得上述两个词典的差异 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);

我尝试了下面的表达式,但没有得到任何结果。
d.Select(c => c.Value.Except(c.Value))

最佳答案

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

关于c# - 使用 LINQ 表达式获取多个嵌套字典除外,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59677508/

相关文章:

c# - 为什么这种扩展方法不起作用?

c# - 当我们没有析构函数时为什么要调用 SuppressFinalize

c# - LINQ 传递 UTC 日期还是使用 DateTime.UtcNow?

c# - 将 IQueryable Where 与具有多个参数的表达式一起使用

c# - 有没有办法*防止* ReSharper 并行运行程序集的单元测试?

c# - 数据注释从数据库中获取错误消息

c# - 反序列化 DateOnly

c# - 是否可以序列化 LINQ 对象?

c# - 如何使用 Odbc 插入 DateTime 对象?

c# - 从基类创建子类的克隆副本