我一直在一個項目工作一段時間來解析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)? –