我有一个名为的实体集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)
你能尝试这样的东西吗?
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)
这将首先Name从Entities集合中选择最大值,然后从与该名称匹配的实体集中获取实体.
| 归档时间: |
|
| 查看次数: |
24387 次 |
| 最近记录: |