我想在C#中将两个字典与作为键的对象进行比较,并将值作为另一个对象的列表进行比较。
例如:
class invoice: field 1, field 2, field 3
class details: field A, field B
所以:
Dictionary<invoice, List<details>>
这些对象是EF的实例,我想要排除参考字段。
我发现这篇文章: C# Compare two dictionaries for equality
Servy解释得非常好.. 但是,您可以插入过滤器吗?
例如,在这篇文章中,他们使用反射: Comparing object properties in c#
你可以添加以下行:
if (pi.PropertyType.Namespace != "System") continue;
这样我只会获取所需的字段(int,string,byte等)
有什么建议吗?
更新
我有两个对象(dict1和dict2)类型:
Dictionary<invoice, List<details>>
我会检查对象的字段(写在帖子顶部)是否相同。
使用edmx文件(和Database First)时,还会创建一个具有引用关系属性的对象实例。
在我的例子中,当你创建一个类型为
的对象时Dictionary<invoice, List<details>>
我找到了表之间的关系属性(我不会检查)。
所以,我想对上面列出的属性(更确切地说,属性值)进行检查(在dict1和dict2之间)
field 1, field 2, field 3 (about Keys)
field A, field B (about Values)
丢弃其他关系字段(例如,使用像System.Data.Objects.DataClasses这样的名称空间)。
原因是:从DB读取dict1并且具有NOT NULL关系。 相反,dict2是由我创建的,关系是NULL,因为我只填充上面提到的字段。 所以,我们需要省略检查这些关系,否则我总是会发现dict1和dict2之间存在差异。
感谢