![](/img/trans.png)
[英]Error: Index was out of range. Must be non-negative and less than the size of the collection
[英]Error Index was out of range. Must be non-negative and less than the size of the collection
我想用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);
}
好吧, bdto
長度小於transactionlist
長度。
在for循環之前,您可以調整bdto
大小以匹配transactionlist
我完全同意@Ashkan和@Mureinik的回答,但只是為了改進代碼,你可以使用AutoMapper 。 它將減少每個元素的循環和迭代。 似乎這兩個對象之間的所有屬性都是相同的。
Mapper.CreateMap<Transaction,BankDepositHistoryDTO>();
BankDepositHistoryDTO obj = Mapper.Map<Transaction,BankDepositHistoryDTO>(TransactionObj);
另外如果GetListoftransactions.GetAccountingListoftransactions();
返回List<BankDepositHistoryDTO>
,可以直接在方法中返回該對象。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.