web-dev-qa-db-fra.com

Syntaxe Linq - Sélection de plusieurs colonnes

Ceci est ma syntaxe Linq que j'utilise pour mon modèle d'entité

IQueryable<string> objEmployee = null;

objEmployee = from res in _db.EMPLOYEEs
              where (res.EMAIL == givenInfo || res.USER_NAME == givenInfo)
              select res.EMAIL;

Comment puis-je sélectionner plusieurs colonnes? Comme je veux sélectionner res.ID aswell. Et comment puis-je les recevoir? IQueryable ne fonctionnera pas je pense. Et cela s'appelle Linq to SQL - pas vrai?

87
Riz

Comme l’ont indiqué les autres réponses, vous devez utiliser un type anonyme.

En ce qui concerne la syntaxe, je préfère personnellement de loin le chaînage des méthodes. La méthode de chaînage équivalente serait: -

var employee = _db.EMPLOYEEs
    .Where(x => x.EMAIL == givenInfo || x.USER_NAME == givenInfo)
    .Select(x => new { x.EMAIL, x.ID });

Autant que je sache, la syntaxe déclarative LINQ est convertie en une chaîne d’appel de méthode semblable à celle-ci lorsqu’elle est compilée.

UPDATE

Si vous voulez l’objet entier, il vous suffit d’omettre l’appel de Select(), c.-à-d.

var employee = _db.EMPLOYEEs
    .Where(x => x.EMAIL == givenInfo || x.USER_NAME == givenInfo);
170
Adam Ralph

Vous pouvez utiliser des types anonymes, par exemple:

  var empData = from res in _db.EMPLOYEEs
                where res.EMAIL == givenInfo || res.USER_NAME == givenInfo
                select new { res.EMAIL, res.USER_NAME };
69
Ivan Danilov
 var employee =  (from res in _db.EMPLOYEEs
 where (res.EMAIL == givenInfo || res.USER_NAME == givenInfo)
 select new {res.EMAIL, res.USERNAME} );

OU vous pouvez utiliser

 var employee =  (from res in _db.EMPLOYEEs
 where (res.EMAIL == givenInfo || res.USER_NAME == givenInfo)
 select new {email=res.EMAIL, username=res.USERNAME} );

Explication:

  1. Sélectionnez l'employé de la base de données en tant que.

  2. Filtrer les détails de l'employé selon la condition Where.

  3. Sélectionnez les champs obligatoires de l'objet employé en créant un objet anonyme à l'aide de new {}.

3
Bimzee