Skip to main content
 首页 » 编程设计

c#之错误索引超出范围。必须是非负数且小于集合的大小

2024年02月25日29zhoujg

我正尝试用 for 填充我的 DTO 对象,但出现此错误:

Index was out of range. Must be non-negative and less than the size of the collection 

这是我的代码:

 public static List <BankDepositHistoryDTO> DtoTODomain() 
        { 
            MyketAdsEntities context = new MyketAdsEntities(); 
            List<BankDepositHistoryDTO> bdto = new List<BankDepositHistoryDTO>(); 
 
 
            //var transactionlist 
 
 
            var transactionlist = GetListoftransactions.GetAccountingListoftransactions(); 
            for (int i = 0; i < transactionlist.Count; i++) 
            { 
                bdto[i].AccountId = transactionlist[i].AccountId; 
                bdto[i].Id = transactionlist[i].Id; 
                bdto[i].Amount = transactionlist[i].Amount; 
                bdto[i].AdditionalData = transactionlist[i].AdditionalData; 
                bdto[i].ClientIp = transactionlist[i].ClientIp; 
                bdto[i].Gateway = transactionlist[i].Gateway; 
                bdto[i].PaymentRefNumber = transactionlist[i].PaymentRefNumber; 
                bdto[i].ReturnUrl = transactionlist[i].ReturnUrl; 
                bdto[i].State = transactionlist[i].State; 
                bdto[i].Uuid = transactionlist[i].Uuid; 
 
 
 
            } 
            return bdto; 
 
        } 

我在这里收到了这条消息

bdto[i].AccountId = transactionlist[i].AccountId; 

请您参考如下方法:

您已经创建了一个空列表,并且没有向其中添加元素。您必须先添加一个元素,然后更新其属性:

for (int i = 0; i < transactionlist.Count; i++) 
{ 
    BankDepositHistoryDTO b = new BankDepositHistoryDTO(); 
    b.AccountId = transactionlist[i].AccountId; 
    b.Id = transactionlist[i].Id;b 
    b.Amount = transactionlist[i].Amount; 
    b.AdditionalData = transactionlist[i].AdditionalData; 
    b.ClientIp = transactionlist[i].ClientIp; 
    b.Gateway = transactionlist[i].Gateway; 
    b.PaymentRefNumber = transactionlist[i].PaymentRefNumber; 
    b.ReturnUrl = transactionlist[i].ReturnUrl; 
    b.State = transactionlist[i].State; 
    b.Uuid = transactionlist[i].Uuid; 
    bdto.Add(b); 
}