Je suis en train de le faire avec LINQ:Aide requête LINQ
SQL>> SELECT p_Id from items WHERE p_Name = 'R1'
LINQ>> var getpID = (from p in myDatabaseDataSet.Items
where p.p_Name == ptxtBox.Text
select p.p_Id).SingleOrDefault();
int p_Id = getpID;
Mais GETPID retourne toujours 0. Quel est le problème ?.
Édition: nvm la syntaxe est correcte. Raison pour laquelle il a toujours retourné 0 est la valeur n'existe pas dans la base de données. J'avais la valeur de la boîte de txt insérée dans la base de données, puis j'essayais de l'appeler à nouveau avant d'actualiser myDatabaseSet. J'ai donc besoin d'ajouter Fill(), puis getpID est capable de lire la valeur.
le code complet:
int c_Id = Convert.ToInt32(pcomboBox.SelectedValue);
int p_Id = 0;
string itemName = ptxtBox.Text;
this.Validate();
this.itemsBindingSource.EndEdit();
this.itemsTableAdapter.Insert(c_Id, itemName);
this.myDatabaseDataSet.AcceptChanges();
this.itemsTableAdapter.Fill(myDatabaseDataSet.Items);
var getpID = (from p in myDatabaseDataSet.Items
where p.p_Name == itemName
select p.p_Id).SingleOrDefault();
p_Id = getpID;
+1 Je ne connaissais pas ce comportement. Merci pour l'information! –
En fait, si la séquence a plusieurs valeurs, SingleOrDefault lancera une exception InvalidOperationException. –
@Ian: corrigé, merci! –