返回具有最大值的所有行

时间:2010-09-09 08:33:19

标签: c# entity-framework lambda group-by having

我正在使用实体框架来连接数据库。

我有一个表(我们称之为“文件”),它有几个字段:

ID,版本,XYZ Primarky密钥基于ID和版本。 所以我可以有几行具有相同的ID但不同的版本(和反向)。

问题是:

我如何使用LAMBDA表达式询问我的实体框架,将所有“文件”的最后版本返回给我。

实施例: DATAS:

 ID;Version;Other
 1;1;YX
 1;2;YZ
 2;1;AH
 2;2;BH
 2;5;CA
 1;3;AAA

结果:

 1;3;AAA
 2;5;CA

谢谢!

!!目标是数据库不需要返回所有行,并且只调用一次,所以忘记像GetAllRows这样的解决方案并读取整个集合并仅保存最新的,或获取所有可能ID的列表并获取最后一个版本foreach在另一个请求中。谢谢!

1 个答案:

答案 0 :(得分:1)

您可以使用以下LinqToEntites查询:

var result = from f in myEntities.Files
             group f by f.ID into g
             select g.OrderByDescending(f => f.Version).FirstOrDefault();

使用First代替FirstOrDefault可能更有意义,但随后你会得到UnsupportedException

  

方法'First'只能用作最终查询操作。考虑在此实例中使用方法'FirstOrDefault'而不是

相关问题