2012-05-10 106 views
1

我正在使用entityframework。我有兩個記錄,它們是使用作爲主鍵的'id'從表中檢索的。現在我想比較這兩個表格記錄數據,並在我的視圖中顯示舊值和新值。現在我的問題是如何比較兩個記錄...我的表中有近20個屬性從中檢索數據。我們必須每個屬性比較或者是有什麼最好的方法......任何一個可以請你幫我找到解決辦法..比較兩行,asp.net mvc3 razor

+0

你能展示一些代碼如何檢索數據嗎? (Model。 – TRR

+0

)請參閱http://stackoverflow.com/questions/986572/hows-to-quick-check-if-data-transfer-two-objects-have-equal-properties-in-c/986617#986617 – Eranga

+0

using(Model。 SlmgDataContext dbContext = new Model.SlmgDataContext()) var student = dbContext.Students.FirstOrDefault(con => con.id == studentid); var previousStudent = dbContext.Students.FirstOrDefault(con => con.id == previousstudentid); }現在我想比較這兩個學生的分數.. –

回答

1
public bool Equals<T>(T first, T second) 
    { 
     var f = new List<T>() {first}; 
     var s = new List<T>() {second}; 
     PropertyInfo[] propertyInfos = typeof(T).GetProperties(BindingFlags.Public | BindingFlags.Static); 

     foreach (PropertyInfo propertyInfo in propertyInfos) 
     { 
      if (f.Select(x => propertyInfo.Name).FirstOrDefault() != s.Select(x => propertyInfo.Name).FirstOrDefault()) 
       return false; 
     } 
     return true; 
    } 

改爲的Equals < T>(T第一,T第二)正如Kim R建議的

試試吧:)我還沒有測試過它

+0

你也可以考慮製作這個通用的,這樣你就可以使用等於(T第一,T秒)其中T:class允許在任何2上進行相同類型的比較同一類別的對象。 –

+0

謝謝@Kim R,我會考慮你的建議 – karaxuna