2009-08-07 10 views
1

J'ai un sql sélectionner comme si qui retourne une datatable:C# datatable de sql rejoindre 2 colonnes même nom

select * from table1 a join table2 b on a.id=b.id 

Table1 et table2 ont une colonne nommée No.Art.

Comment faire référence aux 2 colonnes séparées? Normalement, je voudrais utiliser quelque chose comme:

datarow["itemno"].ToString(); <=first column named itemno only 
datarow["b.itemno"].ToString(); <= fail 

Cependant, cela semble seulement obtenir la première colonne nommée itemno.
Existe-t-il un moyen de référencer la deuxième colonne nommée itemno sans modifier mon instruction sql? (Je sais que je peux changer mon instruction sql, enlever le * et mettre des alias de colonne).

Répondre

3

Vous pouvez référencer les colonnes par index à la place:

datarow[0].ToString(); 

Je préfère de beaucoup les aliasing mais pour être honnête.

+0

Vous avez raison, et c'est la seule alternative. – Max

+1

Voici le danger caché. Si vous changez votre requête plus tard et que vous commencerez à retourner les colonnes dans un ordre différent, votre code cessera de fonctionner. –

+0

Bon point NewInTown. L'aliasing est de loin la meilleure façon de le faire. – Max

Questions connexes