2012-12-12 27 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 ..谢谢你的建议我会试试... –

相关问题