我想要得到的是被使用的EmployeeHistory模型(對象2)員工模型(對象1)所做的更改列表。基本上,只有一個員工記錄,但有幾個EmployeeHistory記錄。每次在Employee上更改某個新記錄時,都會在EmployeeHistory表中添加新記錄,其中包含更改前的Employee的數據。我想要一種方法來比較每個EmployeeHistory記錄並返回一個字符串列表,報告所做的更改。因此,爲了獲得我想要遍歷EmployeeHistory記錄列表的更改列表,並將每個EmployeeHistory記錄與以前的EmployeeHistory記錄進行比較。最後一個EmployeeHistory記錄需要與當前屬性(對象1)記錄進行比較,該記錄在屬性上非常相似。有沒有辦法做到這一點,而沒有瘋狂的數量比較每個記錄上的兩個屬性的IF語句?獲得兩個物體之間的差異有了相同的屬性
這是什麼樣的,我在尋找:
public List<string> GetEmployeeMasterHistory(Models.EmployeeMaster employee,IEnumerable<EmployeeMasterHistory> employeeHistoryCollection)
{
foreach (var historyRecord in employeeHistoryCollection)
{
//Compare historyRecord to EmployeeCollection[historyRecord.Index() - 1]
}
return null;
}
我已經做所有檢查各性能的方法,但將是更大量的屬性在將來添加我厭倦了添加新的IF語句,而且效率不高。
下面是一個EmployeeMasterHistory記錄是這樣的:
public partial class EmployeeMasterHistory
{
public Nullable<int> EmployeeNumber { get; set; }
public Nullable<int> CompanyNumber { get; set; }
public string UserName { get; set; }
public string Initials { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string FullName { get; set; }
public Nullable<bool> StatusFlag { get; set; }
public Nullable<System.DateTime> StartDate { get; set; }
public Nullable<System.DateTime> TerminationDate { get; set; }
public string Branch { get; set; }
public Nullable<int> DepartmentNumber { get; set; }
public string Supervisor { get; set; }
public Nullable<int> Shift { get; set; }
public Nullable<int> UnionNo { get; set; }
public string G2ID { get; set; }
public Nullable<bool> EnterTimeFl { get; set; }
public string Phone { get; set; }
public string Extension { get; set; }
public string CellPhone { get; set; }
public string Email { get; set; }
public Nullable<int> PrimaryJobRole { get; set; }
public Nullable<int> JobLevel { get; set; }
public Nullable<int> JobGroup { get; set; }
public string JobTitle { get; set; }
public string EmployeeType { get; set; }
public string PayType { get; set; }
public Nullable<decimal> Rate { get; set; }
public Nullable<System.DateTime> LastReviewDate { get; set; }
public Nullable<System.DateTime> NextReviewDate { get; set; }
public Nullable<System.DateTime> LastPayChangeDate { get; set; }
public string EmergencyContact { get; set; }
public string EmergencyContactRelationship { get; set; }
public string EmergencyContactPhone { get; set; }
public Nullable<bool> CPComputer { get; set; }
public Nullable<bool> CPPhone { get; set; }
public Nullable<bool> CPCreditCard { get; set; }
public Nullable<bool> CPGasCard { get; set; }
public Nullable<bool> CPKeys { get; set; }
public Nullable<bool> CPSecurityCard { get; set; }
public Nullable<bool> CPVehicle { get; set; }
public Nullable<bool> CPTools { get; set; }
public Nullable<bool> CPUniform { get; set; }
public string ModBy { get; set; }
public Nullable<System.DateTime> ModDate { get; set; }
public int ID { get; set; }
public string SalesRep { get; set; }
public string MiddleName { get; set; }
public Nullable<int> ManagerEmpNo { get; set; }
public Nullable<bool> TempFl { get; set; }
public Nullable<bool> PEWFl { get; set; }
public Nullable<bool> PGTFl { get; set; }
public Nullable<bool> PMPFl { get; set; }
public Nullable<bool> PPGEFl { get; set; }
public Nullable<bool> PPGFl { get; set; }
public Nullable<bool> PRCFl { get; set; }
public Nullable<bool> PTCFl { get; set; }
public Nullable<bool> PPFl { get; set; }
public Nullable<bool> SWPFl { get; set; }
public Nullable<int> PrimaryDivision { get; set; }
public string TechGroupID { get; set; }
public string TechLevelID { get; set; }
public Nullable<bool> TechATD { get; set; }
public Nullable<int> ReviewPeriod { get; set; }
public Nullable<bool> CorpFl { get; set; }
}
預先感謝您!
聽起來像是一個反射在我頭上的工作。 – 2014-10-17 19:28:54
您可以使用反射來識別要比較的屬性。那麼這只是使用循環而不是爲每個屬性編寫新的if子句的問題。如果您只想比較一些屬性,則可以定義一個自定義屬性,以便選擇用於比較的屬性,或選擇退出。 – 2014-10-17 19:29:21
我對反射做了一些研究,因爲我對它很陌生。我將嘗試使用它來創建解決方案。謝謝你們,這非常有幫助。 – user3788671 2014-10-17 19:34:24