LINQ to SQL MAX dans la clause where
Je suis Linq donc, comme prévu, j'ai rencontré des difficultés.
Ce que je suis en train de réaliser est ce:
SELECT id, name, password
FROM users u
WHERE u.id = (SELECT MAX(u1.id) FROM users u1);
Mon Linq est:
var dbUsers = from u in context.Users
where u.Id == (context.Users.Max(u1 => u1.Id))
select u;
Mais je finis toujours avec l'exception suivante:
Impossible de créer une valeur constante de type 'Bla.Les utilisateurs'. Seule primitive
types ("comme Int32, String et Guid") sont pris en charge dans cette
contexte.
Ici est la classe users:
public class Users
{
[Key]
public int Id { get; set; }
public string Name { get; set; }
public string Password { get; set; }
}
}
Voici ma classe de contexte:
public class EFDbContext : DbContext
{
public DbSet<User> Users{ get; set; }
}
OriginalL'auteur Michael H. | 2011-09-02
Vous devez vous connecter pour publier un commentaire.
Vous devez sélectionner le
ID
propriétéSi je déplace le Max d'agrégation à l'extérieur de la requête, les choses ne se de travail: int id = contexte.Les utilisateurs.Max(u1 => u1.Id) et ensuite var dbUsers = u dans le contexte.Les utilisateurs où u.Id == id select u;
OriginalL'auteur Aducci
J'ai l'habitude de faire de mon LINQing en lambda format...
Si vous voulez la compréhension format...
OriginalL'auteur Neil T.
Envisager d'utiliser un
let
déclaration:OriginalL'auteur lsuarez
S'il vous plaît laissez-moi savoir si celui-ci résout votre problème:
OriginalL'auteur Sébastien
Vous pouvez utiliser les expressions lambda:
ou:
OriginalL'auteur Cesar Alvarado Diaz