Soy nuevo en Linq así que como esperaba, he encontrado dificultades. Lo que estoy tratando de lograr es la siguiente:LINQ to SQL MAX en WHERE cláusula
SELECT id, name, password
FROM users u
WHERE u.id = (SELECT MAX(u1.id) FROM users u1);
Mi LINQ es:
var dbUsers = from u in context.Users
where u.Id == (context.Users.Max(u1 => u1.Id))
select u;
Pero siempre termina con la siguiente excepción:
No se puede crear un valor constante de tipo 'Bla.Users'. Solo los tipos primitivos ('como Int32, String y Guid') son compatibles en este contexto .
Aquí es la clase de usuarios:
public class Users
{
[Key]
public int Id { get; set; }
public string Name { get; set; }
public string Password { get; set; }
}
}
Aquí es mi clase de contexto:
public class EFDbContext : DbContext
{
public DbSet<User> Users{ get; set; }
}
mismo problema. Olvidé mencionar que estoy usando MySQL como fuente de datos. –
Si muevo el agregado máximo fuera de la consulta, las cosas funcionan: int id = context.Users.Max (u1 => u1.Id) y luego var dbUsers = desde u en context.Users donde u.Id == id seleccione u; –