-3
votes

Boucle via l'initialisateur d'objet

Comment puis-je optimiser la pièce de code suivante? XXX


5 commentaires

Pourriez-vous être plus précis - ce qui ne va pas et ce que vous voulez faire?


Je suppose que vous voulez Ajouter () Le nouveau OrderItem à OrderSitemslist ?


J'essaie de renseigner les résultats de la DB à la matrice d'initialisation de l'objet, mais il a renvoyé 0 résultats. J'ai déjà vérifié la requête de la DB et c'est bon. Je dois remplir ces objets pour le modèle de texte d'exécution.


Utilisez cet intérieur pendant => ordectryemslist.add (nouvel articleName = ordreItemsResult.getstring ("item_name"), prix = ordreItemsResult.getfloat ("prix"), quantité = ordreItemsResult.getint32 ("Quantité")});


Merci er-sho haha! Suis un tel noob.


3 Réponses :


0
votes

comme @CrowCoder et @ Er-sho a souligné dans les commentaires, vous devez ajouter le OrderItem code> à OrderSitemslist CODE>:

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);
}


1 commentaires

Merci! Très appréciée.



1
votes

Bien qu'un peu en retard pour répondre, j'ajouterai toujours mes pensées. Nous pouvons faire sans List objet. Le code ci-dessous renvoie ienumerable xxx


1 commentaires

Merci Ajeet! Très appréciée. Je n'ai jamais pensé qu'il y a de nombreuses façons de faire ça. Super aide pour une semaine d'une semaine C # développeur comme moi.



-1
votes

Comme dans la réponse acceptée, vous pouvez la mettre en œuvre comme une fonction Itératrice, mais gardez à l'esprit que, dans le cas où OrderEditemSResult est idissible tel que IDatreader pour la lecture d'une base de données comme une base de données (les méthodes qui apparaissent apparaissent que c'est le cas) pour vous assurer de l'intégrer en try / enfin ou en utilisant un bloc. Par exemple:

IEnumerable<OrderItem> GetOrders(string connectionString, string queryString)
{
    IDbConnection connection = new MyDbConnection(connectionString);
    IDbCommand command = null;
    IDbReader orderedItemsResult = null;
    try
    {
        connection.Open();
        command = new MyCommand(queryString, connection);
        orderedItemsResult = command.ExecuteReader();
        while (orderItemsResult.Read())
        {
            yield return new OrderItem()
            {
                ItemName = orderItemsResult.GetString("item_name"),
                Price = orderItemsResult.GetFloat("price"),
                Quantity = orderItemsResult.GetInt32("quantity")
            };
        }
    }
    finally
    {
        orderItemsResult?.Dispose();
        command?.Dispose();
        connection.Dispose();
    }
}


0 commentaires