我有一个实体集,其中的实体具有包含 ID (GUID) 和 CreatedAt (DateTime) 的复合键。 CreatedAt 是实体被创建的时间。每个记录代表每个实体的每个版本,以便多个记录可以具有相同的 ID。
我想创建一个可以重复使用的 IQueryable 返回方法,这样它只会返回所请求实体的最新版本,但我正在努力寻找答案(如果确实有答案)。
我知道我可以编写一个查询,例如
(from e in context.Entities where e.ID = myID orderby e.CreatedAt).FirstOrDefault();
但我希望能够这样做:
(from e in context.GetCurrentEntities() where e.ID = myID).FirstOrDefault();
这样它只会返回所需实体的最新版本。
这可行吗?
非常感谢您的帮助。
Lee
如果按 ID 分组,则可以使用如下所示仅从每个组中选择最新的:
public IQueryable<Entity> GetCurrentEntities()
{
return from e in this.Entities
group e by e.ID into g
select g.OrderByDescending(e => e.CreatedAt).First();
}
你不需要FirstOrDefault()
因为除非至少有一个组,否则不会创建组Entity
在组里。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)