我一直在一个项目工作一段时间来解析csv文件中的条目列表并使用该数据来更新数据库。C#比较复杂的对象返回差异列表
对于每个条目,我创建一个新的用户实例,我把它放在一个集合中。现在我想迭代该集合并将用户条目与数据库中的用户进行比较(如果存在)。我的问题是,如何将用户(条目)对象与用户(db)对象进行比较,并返回具有差异的列表?
对于从数据库中生成例如以下类:
public class User
{
public int ID { get; set; }
public string EmployeeNumber { get; set; }
public string UserName { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public Nullable<int> OfficeID { get; set; }
public virtual Office Office { get; set; }
}
public class Office
{
public int ID { get; set; }
public string Code { get; set; }
public virtual ICollection<User> Users { get; set; }
}
为了一些查询保存到数据库中,我只是填补我可以从CSV文件中检索的属性,所以ID的(例如)不可用于平等检查。
有没有什么办法可以比较这些对象,而无需为每个属性定义规则并返回修改的属性列表?我知道这个问题似乎与以前的一些帖子类似。我已经阅读了很多,但由于我对编程没有经验,所以我会很感激一些建议。
从我读过的内容中,我应该将'一般性比较属性'与'忽略使用数据注释的属性'和'返回CompareResults列表'结合起来?
为了更好地理解您的问题,如果您的CSV文件中没有该ID,那么您将用什么作为用户的唯一标识符?即您何时决定不创建新条目? –
噢,对不起,我遗漏了一些属性来将这个例子稍微扁平化。我将编辑示例。唯一标识符是一个员工编号,这对于决定是否在数据库中创建新用户当然是必需的。 – Leegaert
你见过[比较两个对象并找到差异](http://stackoverflow.com/questions/4951233/compare-two-objects-and-find-the-differences)? –