C#通过过滤类型

时间:2017-01-09 01:35:09

标签: c# dictionary

我想在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之间存在差异。

感谢

0 个答案:

没有答案