Sono nuovo a Linq, così come previsto, ho riscontrato delle difficoltà. Quello che sto cercando di realizzare è questo:LINQ a SQL MAX nella clausola WHERE
SELECT id, name, password
FROM users u
WHERE u.id = (SELECT MAX(u1.id) FROM users u1);
mio Linq è:
var dbUsers = from u in context.Users
where u.Id == (context.Users.Max(u1 => u1.Id))
select u;
Ma ho sempre finiscono con la seguente eccezione:
Impossibile creare un valore costante di digita "Bla.Users". Solo i tipi primitivi ('come Int32, String e Guid') sono supportati in questo contesto .
Qui è la classe degli utenti:
public class Users
{
[Key]
public int Id { get; set; }
public string Name { get; set; }
public string Password { get; set; }
}
}
Qui è la mia classe del contesto:
public class EFDbContext : DbContext
{
public DbSet<User> Users{ get; set; }
}
stesso problema. Ho dimenticato di dire che sto usando MySQL come fonte di dati. –
Se sposto l'aggregato Max all'esterno della query, le cose funzionano: int id = context.Users.Max (u1 => u1.Id) e quindi var dbUsers = da u in context.Users dove u.Id == id seleziona u; –