簡體   English   中英

c# 將項目添加到列表中

[英]c# add items to a list

我正在嘗試向下面的項目添加項目,但出現以下錯誤;

無法將項目隱式轉換為 System.Collection.Generic.List

我的物品類型如下;

public class Item
{
    [JsonProperty("variantId")]
    public int variantId { get; set; }

    [JsonProperty("quantity")]
    public int quantity { get; set; }

    [JsonProperty("returnReason")]
    public ReturnReason returnReason { get; set; } = new ReturnReason();
}

public class RootObject
{
    [JsonProperty("dropOff")]
    public DropOff dropOff { get; set; } = new DropOff();

    [JsonProperty("providerId")]
    public int providerId { get; set; }

    [JsonProperty("Reference")]
    public string Reference { get; set; }

    [JsonProperty("Id")]
    public int Id { get; set; }

    [JsonProperty("items")]
    public List<Item> items { get; set; } = new List<Item>();
}

我知道它們是兩種不同的類型,但我將如何克服這一點

這是拋出錯誤;

items = (new Item
{ 
    quantity = csv.GetField<int>(""), 
    variantId = csv.GetField<int>(""), 
    returnReason = new ReturnReason
    { 
        code= csv.GetField<int>("") 
    } 
})

只是為了添加更多上下文,這就是我所說的

while (csv.Read())
{
    var booking = new ReturnsBooking.RootObject
    {
        dropOff = new DropOff {dropOffPointId = csv.GetField<string>("DropOffPointId") },
        providerId = csv.GetField<int>("ProviderID"),
        orderReference = csv.GetField("OrderReference"),
        returnMethodId = csv.GetField<int>("returnMethodId"),
        items = new Item
        {
            quantity = csv.GetField<int>(""), 
            variantId = csv.GetField<int>(""), 
            returnReason = new ReturnReason
            { 
                code = csv.GetField<int>("")
            }
        })
    };

    recordss.Add(booking);
}

return recordss;

當我嘗試 items.add 時,我收到一條錯誤消息,指出項目不存在。 我也試過初始化項目..這似乎也不起作用

它引發錯誤,因為您沒有將項目添加到列表中,而是項目分配給需要列表的變量。 這就是為什么您收到的異常表示您無法將 item 轉換為列表。

您可以在 RootObject 的初始化中使用列表初始化:

var booking = new ReturnsBooking.RootObject
{
    items = new List<Item>
    {
        new Item
        { 
            quantity = csv.GetField<int>(""), 
            variantId = csv.GetField<int>(""), 
            returnReason = new ReturnReason
            { 
                code= csv.GetField<int>("") 
            } 
        }
    },
  //Other properties of RootObject...
}

或者您可以在 RootObject 初始化后添加該項目,如下所示:

var booking = new ReturnsBooking.RootObject {/* Initialize RootObject without adding the item ... */};

booking.items.Add(new Item
{ 
    quantity = csv.GetField<int>(""), 
    variantId = csv.GetField<int>(""), 
    returnReason = new ReturnReason
    { 
        code= csv.GetField<int>("") 
    } 
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM