Howto place des données à partir d'un jeu de données pour la Liste
Im essayant d'ajouter des données dans un ensemble de données dans une Liste. C'est ma fonction en C#
public List<ProductsDAL> GetAllProducts(string sqlQuery)
{
DataSet dsinsert = GetDataSet(sqlQuery, "tblProducts");
List<ProductsDAL> bPList = new List<ProductsDAL>();
ProductsDALforeach (DataRow item in dsinsert.Tables[0].Rows)
{
this.Product_ID = item["Product_ID"].ToString();
this.ProductDescr= item["ProductDescr"].ToString();
bPList.Add(this);
}
return bPList;
}
Le résultat dans le jeu de données est comme
column1 - colum2
A 1
B 2
C 3
D 4
Mais je pense que le résultat de la liste est:
column1 - colum2
D 1
D 1
D 1
D 1
Lorsque j'insère cet ensemble de données dans une autre base de données je ne reçois ceci:
column1 - colum2
D 1
Ce que je fais mal dans ma fonction ?
OriginalL'auteur Janis | 2010-03-10
Vous devez vous connecter pour publier un commentaire.
Vous avez besoin pour créer un nouveau
ProductsDAL
à l'intérieur de l'instruction foreach. Vous êtes tout simplement la mise à jour de la même.OriginalL'auteur Aaron Daniels
Je pense que votre problème est votre utilisation de ce. Ma conjecture est que vous le faites dans votre Classe de Produit
changer à ce
OriginalL'auteur freddoo
Vous ajoutez à l'objet courant,
this
, à la liste et ensuite, dans les itérations suivantes, vous modifiez le même objet (par l'intermédiaire de lathis
de référence) avant de l'ajouter, de nouveau, à la liste. Cela signifie que vous vous retrouvez avec une liste contenant le même objet (lathis
objet), encore et encore. Ses valeurs reflètent uniquement les valeurs les plus récentes appliquées.Ce que vous voulez faire à la place, c'est d'ajouter de nouvelles instances de ProductsDAL de la liste à chaque fois, c'est à dire au lieu de modiying
this
, au lieu de cela, vous devez créer un nouveau ProductsDAL, définir son état et l'ajouter à la liste.Ici est la première chose que vous devriez faire:
Aussi:
OriginalL'auteur Paul Ruane
Une autre option est d'utiliser LINQ to jeux de données...
OriginalL'auteur Tom Brothers
Je pense que la ligne de 9 pourrait être à l'origine des problèmes. Au lieu de cela (pour remplacer des lignes 7-9), je serais probablement faire quelque chose le long des lignes de:
OriginalL'auteur Jamie Chapman
Vous réutilisez le même objet et plus, vous avez besoin de re-créer l'objet. J'aime séparant ce code dans une autre fonction. Voici comment j'allais le faire:
D'abord, vous devez getproducts comme suit:
Ainsi, vous pouvez demander comment Db.GetDataTable chercher, bien comme ceci:
Pour des raisons de simplicité, je ne suis pas à l'aide de sprocs, mais vous devez...de toute façon, vous demandez peut-être ce ne MakeProducts(dt), et qui est simplement une fonction de boucle et les ajouter à une liste:
Donc, ici, il vous suffit de boucle de chaque ligne et de faire un produit objet qui ressemble à ceci:
OriginalL'auteur JonH
Serait la suite des travaux?
OriginalL'auteur Kelsey
Vous pouvez essayer comme ceci
OriginalL'auteur atik sarker