2012-12-12 38 views
2

我有一個listitem,我將這個listitem多次添加到一個列表與一個屬性差異... ie listitem有DateOfService屬性.. ... 然後我是將第一個項目列表...這很好 和我改變DateOfService財產,然後再加入... 但先前添加的項目DateOfService也是量變到質變.... 我怎樣才能解決這個問題?我如何區分列表中的項目在c#

sampleCode

if (bills[index].FrequencyId == Convert.ToInt32(Frequency.Daily)) 
    { 
    for (int day = 0; day < remainedDays; day++) 
    { 

     bills[index].DateOfService = DateTime.Now.Date.AddDays(day).Date; 
     remainedBills.Add(bills[index]); 
    } 
    } 

嗨,我這樣做也,但沒有用...

if (bills[index].FrequencyId == Convert.ToInt32(Frequency.Daily)) 
        { 
         AdmissionEntryVo objAdmissionEntryVo = null; 
         for (int day = 0; day < remainedDays; day++) 
         { 
          objAdmissionEntryVo = new AdmissionEntryVo(); 
          objAdmissionEntryVo = bills[index]; 
          objAdmissionEntryVo.DateOfService = DateTime.Now.Date.AddDays(day).Date; 
          remainedBills.Add(objAdmissionEntryVo); 
         } 
        } 
+0

這可能有助於http://stackoverflow.com/questions/222598/how-do-i-clone-a-generic-list-in-c – Shyju

+0

你可以使用icloneable接口。 然後,你可以簡單地添加克隆實例到列表 –

+0

大家好,謝謝你的寶貴意見,我會嘗試icloneable接口,並來到你... –

回答

0

大家好我已經寫extention方法複製所有屬性到另一個列表項,並添加... 它的正常工作......

這裏是extention方法

public static void CopyPropertiesTo<T>(this T source, T dest) 
     { 
      var plist = from prop in typeof(T).GetProperties() where prop.CanRead && prop.CanWrite select prop; 

      foreach (PropertyInfo prop in plist) 
      { 
       prop.SetValue(dest, prop.GetValue(source, null), null); 
      } 
     } 
1

他們都在同一個對象,你不添加多者。解決你所說的問題的唯一方法是每次添加時創建新的實例。

+0

嗨感謝回覆我做了你說的...但沒有影響.. –

1

我改變DateOfService財產,然後再加入... ...但 以前添加的項目DateOfService也是量變到質變

那是因爲你要添加的對象引用列表,你的對象在列表指向相同的參考,因此當您更改某個項目時,您會看到其他項目中的效果。您需要創建對象的新實例,然後修改其屬性並將其添加到列表中。

+0

嗨,感謝您的回覆我做了你所說的...但沒有效果... –

+0

顯示您嘗試的代碼 – Habib

+0

@VenkiChikkanti,您的線路'objAdmissionEntryVo = bills [index];'再次複製參考。你需要複製/映射屬性到新的對象或實現對象的複製方法 – Habib

0

似乎它與「首選和原始數據類型」有關。 由於所有這些對象都只是同一個對象,所以您不斷向列表中添加相同的對象。 我的建議是在繼續之前學習和區分「首選和原始數據類型」。 ;) 乾杯。

+0

okey ..謝謝你的建議我會試試... –

相關問題