Цикл через инициализатор объекта - PullRequest
0 голосов
/ 16 марта 2019

Как я могу оптимизировать следующий фрагмент кода?

IList<OrderItem> OrderItemsList = new List<OrderItem>();
while (orderItemsResult.Read())
{
    new OrderItem()
    {
        ItemName = orderItemsResult.GetString("item_name"),
        Price = orderItemsResult.GetFloat("price"),
        Quantity = orderItemsResult.GetInt32("quantity")
    },
}

Ответы [ 2 ]

2 голосов
/ 17 марта 2019

Хотя я немного опоздал с ответом, я все же добавлю свои мысли.Мы можем обойтись без List<OrderItem> объекта.Код ниже возвращает IEnumerable<OrderItem>

while (orderItemsResult.Read())
{
   yield return new OrderItem()
   {
        ItemName = orderItemsResult.GetString("item_name"),
        Price = orderItemsResult.GetFloat("price"),
        Quantity = orderItemsResult.GetInt32("quantity")
    };
}
1 голос
/ 16 марта 2019

Как отметили @crowcoder и @ er-sho в комментариях, вам нужно добавить OrderItem к OrderItemsList:

IList<OrderItem> OrderItemsList = new List<OrderItem>();
while (orderItemsResult.Read())
{
    var orderItem = new OrderItem()
    {
        ItemName = orderItemsResult.GetString("item_name"),
        Price = orderItemsResult.GetFloat("price"),
        Quantity = orderItemsResult.GetInt32("quantity")
    };

    // add to the list
    OrderItemsList.Add(orderItem);
}
...