1 votes

Opérateur linq comme * (astérisque) dans sql

Je veux sélectionner tous les champs d'une table, et seulement les champs spécifiques d'une deuxième table. Existe-t-il un moyen de le faire comme avec table.* en SQL ?

 var things = from t in db.table1
              from t2 in db.table2
              where ...Join Clause...
              select new { t.*,t2.onefield}

Il est évident que ce code ne fonctionne pas, mais je pense qu'il illustre mon objectif.

si j'utilise

select new {t,t2.onefield}

il se compile, mais il échoue lorsque je l'assigne à une source de données d'une grille de données. Actuellement, j'écris tous les champs dont j'ai besoin dans chaque table.

Merci.

2voto

Randy Minder Points 19262

Ce n'est pas une bonne pratique en SQL et, même si cela peut être fait avec Linq, ce ne serait pas non plus une bonne pratique avec Linq, à moins que Linq ne génère du code T-SQL qui s'étende à toutes les colonnes de la table.

2voto

Marcel Gosselin Points 2730

Vous pourriez faire ce qui suit :

var things = from t in db.table1
          from t2 in db.table2
          where ...Join Clause...
          select new { MyProperty= t ,t2.onefield}

puis accéder aux fieds de T avec :

var t= things.First();
Console.WriteLine("{0}, {1}, {2}", 
                  t.MyProperty.Field1, 
                  t.MyProperty.Field2, 
                  t.onefield);

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X