Comment puis-je optimiser la pièce de code suivante?
3 Réponses :
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);
}
Merci! Très appréciée.
Bien qu'un peu en retard pour répondre, j'ajouterai toujours mes pensées.
Nous pouvons faire sans List
ienumerable
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.
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(); } }
Pourriez-vous être plus précis - ce qui ne va pas et ce que vous voulez faire?
Je suppose que vous voulez
Ajouter () CODE> Le nouveau
OrderItem code> à
OrderSitemslist code>?
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 code> =>
ordectryemslist.add (nouvel articleName = ordreItemsResult.getstring ("item_name"), prix = ordreItemsResult.getfloat ("prix"), quantité = ordreItemsResult.getint32 ("Quantité")}); code>
Merci er-sho haha! Suis un tel noob.