实体框架 - 从实体中选择*,其中Id =(从实体中选择最大值(Id))

Ian*_*Ian 4 entity-framework

我有一个名为的实体集Entities,它有一个字段Name和一个字段Version.我希望返回具有所选的最高版本的对象Name.

SQL明智我会去

Select * 
from table 
where name = 'name' and version = (select max(version)  
                                   from table 
                                   where name = 'name')
Run Code Online (Sandbox Code Playgroud)

或类似的东西.不知道如何用EF实现这一目标.我试图使用CreateQuery<>查询的文本表示,如果这有帮助.

谢谢

编辑:这是一个使用两个查询的工作版本.不是我想要的,似乎非常低效.

var container = new TheModelContainer();
var query = container.CreateQuery<SimpleEntity>(
    "SELECT VALUE i FROM SimpleEntities AS i WHERE i.Name = 'Test' ORDER BY i.Version desc");
var entity = query.Execute(MergeOption.OverwriteChanges).FirstOrDefault();
query =
    container.CreateQuery<SimpleEntity>(
        "SELECT VALUE i FROM SimpleEntities AS i WHERE i.Name = 'Test' AND i.Version =" + entity.Version);
var entity2 = query.Execute(MergeOption.OverwriteChanges);
Console.WriteLine(entity2.GetType().ToString());
Run Code Online (Sandbox Code Playgroud)

mar*_*c_s 7

你能尝试这样的东西吗?

using(var container = new TheModelContainer())
{
    string maxEntityName = container.Entities.Max(e => e.Name);
    Entity maxEntity = container.Entities
                           .Where(e => e.Name == maxEntityName)
                           .FirstOrDefault();
}
Run Code Online (Sandbox Code Playgroud)

这将首先NameEntities集合中选择最大值,然后从与该名称匹配的实体集中获取实体.