【发布时间】:2021-01-12 00:13:33
【问题描述】:
我想知道使用 lambda linq 和 C# 来获得两个 List<Dictionary<string, string>> 之间差异的更好解决方案是什么。
我正在尝试使用这样的表达式,但即使两个列表相同,也会得到一个空结果
var result = actualOutputList.Where(a => expectedOutputList.
Any(e => (e.Values == a.Values) && (e.Keys == a.Keys))).ToList();
如果我改为!expectedOutputList 而不是expectedOutputList,即使存在差异,我也会得到完整的结果列表。
应该如何比较两个List<Dictionary<string, string>> 并获得正确的结果列表?
【问题讨论】:
-
呃,为什么需要字典列表?你能不能只有一本字典?
-
C# 是关于类型的:
e.Values的类型是什么?operator==对这种类型有什么作用?你希望发生什么? -
在这种情况下,“获取差异”是什么意思?您是否期望
actualOutputList成员不在expectedOutputList成员中?您是否期望expectedOutputList成员不在actualOutputList成员中?你期待两者吗? -
请注意,通常比较
Dictionary的Values和Dictionary的Keys并没有说明字典的等价性:键和值之间的映射可能完全不同。