c# добавить элементы в список - PullRequest
1 голос
/ 13 марта 2020

Я пытаюсь добавить элементы к элементу ниже, но получаю следующую ошибку:

Не удается неявно преобразовать элемент в System.Collection.Generi c .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 .. это, похоже, тоже не работает

1 Ответ

4 голосов
/ 13 марта 2020

Выдает ошибку, потому что вы не добавляете элемент в список, вы присваиваете элемент переменной, которая ожидает список. Вот почему полученное вами исключение говорит о том, что вы не можете преобразовать элемент в список.

Вы можете использовать инициализацию списка в рамках инициализации вашего 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>("") 
    } 
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...