List泛型Add后,所有值都是最后一次Add的结果 解决方法

public List<VoucherEntryEntity> AnalyseVoucherEntry(DataTable voucherentry)
        {

            VoucherEntryEntity voucherentryentity = new VoucherEntryEntity();
            List<VoucherEntryEntity> listVoucherEntity = new List<VoucherEntryEntity>();
            for (int i = 0; i < voucherentry.Rows.Count;i++ )
            {
                voucherentryentity.FBrNo = voucherentry.Rows[i]["FBrNo"].ToString();
                voucherentryentity.FExplanation = voucherentry.Rows[i]["FExplanation"].ToString();
                voucherentryentity.FAccountID = Convert.ToInt32(voucherentry.Rows[i]["FAccountID"]);
                voucherentryentity.FDetailID = Convert.ToInt32(voucherentry.Rows[i]["FDetailID"]);
                voucherentryentity.FCurrencyID = Convert.ToInt32(voucherentry.Rows[i]["FCurrencyID"]);
                voucherentryentity.FExchangeRate = float.Parse(voucherentry.Rows[i]["FExchangeRate"].ToString());
                voucherentryentity.FDC = Convert.ToInt32(voucherentry.Rows[i]["FDC"]);
                voucherentryentity.FAmountFor = Convert.ToDecimal(voucherentry.Rows[i]["FAmountFor"]);
                voucherentryentity.FAmount = Convert.ToDecimal(voucherentry.Rows[i]["FAmount"]);
                voucherentryentity.FQuantity = float.Parse(voucherentry.Rows[i]["FQuantity"].ToString());
                voucherentryentity.FMeasureUnitID = Convert.ToInt32(voucherentry.Rows[i]["FMeasureUnitID"]);
                voucherentryentity.FUnitPrice = float.Parse(voucherentry.Rows[i]["FUnitPrice"].ToString());
                voucherentryentity.FInternalInd = voucherentry.Rows[i]["FInternalInd"].ToString();
                voucherentryentity.FAccountID2 = Convert.ToInt32(voucherentry.Rows[i]["FAccountID2"]);
                voucherentryentity.FSettleTypeID = Convert.ToInt32(voucherentry.Rows[i]["FSettleTypeID"]);
                voucherentryentity.FSettleNo = voucherentry.Rows[i]["FSettleNo"].ToString();
                voucherentryentity.FTransNo = voucherentry.Rows[i]["FTransNo"].ToString();
                voucherentryentity.FCashFlowItem = Convert.ToInt32(voucherentry.Rows[i]["FCashFlowItem"]);
                voucherentryentity.FTaskID = Convert.ToInt32(voucherentry.Rows[i]["FTaskID"]);
                voucherentryentity.FResourceID = Convert.ToInt32(voucherentry.Rows[i]["FResourceID"]);
                listVoucherEntity.Add(voucherentryentity);
            }
            return listVoucherEntity;
        }

添加多条数据时,所有的值都是最后一次的结果。

原来在.net中,list 在ADD时,每次保留一个它的引用,所以要把VoucherEntryEntity voucherentryentity = new VoucherEntryEntity();
放到for循环中去才可以避免ADD后的值不会重复,也就是每循环一次,VoucherEntryEntity 就要new 一次.

 

 

public List<VoucherEntryEntity> AnalyseVoucherEntry(DataTable voucherentry)
        {

            
            List<VoucherEntryEntity> listVoucherEntity = new List<VoucherEntryEntity>();
            for (int i = 0; i < voucherentry.Rows.Count;i++ )
            {

                VoucherEntryEntity voucherentryentity = new VoucherEntryEntity();
                voucherentryentity.FBrNo = voucherentry.Rows[i]["FBrNo"].ToString();
                voucherentryentity.FExplanation = voucherentry.Rows[i]["FExplanation"].ToString();
                voucherentryentity.FAccountID = Convert.ToInt32(voucherentry.Rows[i]["FAccountID"]);
                voucherentryentity.FDetailID = Convert.ToInt32(voucherentry.Rows[i]["FDetailID"]);
                voucherentryentity.FCurrencyID = Convert.ToInt32(voucherentry.Rows[i]["FCurrencyID"]);
                voucherentryentity.FExchangeRate = float.Parse(voucherentry.Rows[i]["FExchangeRate"].ToString());
                voucherentryentity.FDC = Convert.ToInt32(voucherentry.Rows[i]["FDC"]);
                voucherentryentity.FAmountFor = Convert.ToDecimal(voucherentry.Rows[i]["FAmountFor"]);
                voucherentryentity.FAmount = Convert.ToDecimal(voucherentry.Rows[i]["FAmount"]);
                voucherentryentity.FQuantity = float.Parse(voucherentry.Rows[i]["FQuantity"].ToString());
                voucherentryentity.FMeasureUnitID = Convert.ToInt32(voucherentry.Rows[i]["FMeasureUnitID"]);
                voucherentryentity.FUnitPrice = float.Parse(voucherentry.Rows[i]["FUnitPrice"].ToString());
                voucherentryentity.FInternalInd = voucherentry.Rows[i]["FInternalInd"].ToString();
                voucherentryentity.FAccountID2 = Convert.ToInt32(voucherentry.Rows[i]["FAccountID2"]);
                voucherentryentity.FSettleTypeID = Convert.ToInt32(voucherentry.Rows[i]["FSettleTypeID"]);
                voucherentryentity.FSettleNo = voucherentry.Rows[i]["FSettleNo"].ToString();
                voucherentryentity.FTransNo = voucherentry.Rows[i]["FTransNo"].ToString();
                voucherentryentity.FCashFlowItem = Convert.ToInt32(voucherentry.Rows[i]["FCashFlowItem"]);
                voucherentryentity.FTaskID = Convert.ToInt32(voucherentry.Rows[i]["FTaskID"]);
                voucherentryentity.FResourceID = Convert.ToInt32(voucherentry.Rows[i]["FResourceID"]);
                listVoucherEntity.Add(voucherentryentity);
            }
            return listVoucherEntity;
        }

posted @ 2013-07-03 09:50  阿窟窿  阅读(401)  评论(0编辑  收藏  举报