92 votes

Comment sélectionner une seule colonne avec Entity Framework ?

Existe-t-il un moyen d'obtenir l'intégralité du contenu d'une seule colonne à l'aide d'Entity Framework 4 ? La même chose que cette requête SQL :

 SELECT Name FROM MyTable WHERE UserId = 1;

179voto

Christofer Eliasson Points 16563

Vous pouvez utiliser les .Select() de LINQ pour le faire. Dans votre cas, cela donnerait quelque chose comme :

 string Name = yourDbContext
  .MyTable
  .Where(u => u.UserId == 1)
  .Select(u => u.Name)
  .SingleOrDefault(); // This is what actually executes the request and return a response

Si vous attendez plus d'une entrée en réponse, vous pouvez utiliser .ToList() place pour exécuter la requête. Quelque chose comme ça, pour obtenir le nom de tous ceux qui ont 30 ans :

 string[] Names = yourDbContext
  .MyTable
  .Where(u => u.Age == 30)
  .Select(u => u.Name)
  .ToList();

6voto

Jawid Hassim Points 69

Je suis un noob complet sur Entity mais c'est comme ça que je le ferais en théorie...

 var name = yourDbContext.MyTable.Find(1).Name;

Si c'est une clé primaire.

-- OU --

 var name = yourDbContext.MyTable.SingleOrDefault(mytable => mytable.UserId == 1).Name;

-- OU --

Pour toute la colonne :

 var names = yourDbContext.MyTable
.Where(mytable => mytable.UserId == 1)
.Select(column => column.Name); //You can '.ToList();' this....

Mais "oh Geez Rick, qu'est-ce que je sais..."

5voto

Clayton Points 446

En utilisant LINQ, votre requête devrait ressembler à ceci :

 public User GetUser(int userID){

return
(
 from p in "MyTable" //(Your Entity Model)
 where p.UserID == userID
 select p.Name
).SingleOrDefault();

}

Bien sûr, pour ce faire, vous devez avoir un modèle d'entité ADO.Net dans votre solution.

2voto

M.Babcock Points 10653

Vous pouvez utiliser la select et référencer la propriété qui se rapporte à votre colonne Nom.

1voto

Sachin Parashar Points 138

Si vous récupérez un seul élément alors, vous devez utiliser select avant votre FirstOrDefault()/SingleOrDefault() . Et vous pouvez utiliser un objet anonyme des propriétés requises.

 var name = dbContext.MyTable.Select(x => new { x.UserId, x.Name }).FirstOrDefault(x => x.UserId == 1)?.Name;

La requête ci-dessus sera convertie en ceci :

 Select Top (1) UserId, Name from MyTable where UserId = 1;

Pour plusieurs articles, vous pouvez simplement enchaîner Sélectionner après Où :

 var names = dbContext.MyTable.Where(x => x.UserId > 10).Select(x => x.Name);

Utiliser un objet anonyme dans Sélectionnez si vous avez besoin de plusieurs propriétés.

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