在LINQ中使用具有MAX函数的子查询

时间:2012-11-13 14:12:33

标签: entity-framework

我是Entity Framework的新手,所以我在将纯SQL语句转换为LINQ时遇到了很多问题。 以下示例是我必须要做的事情,但我似乎找不到解决方案......

SQL语句:

SELECT * 
  FROM MyTable Table1
 WHERE Table1.Column1 = 1
   AND Table1.Column2 = 2
   AND Table1.SequenceNr = (SELECT MAX(Table2.SequenceNr) 
            FROM MyTable Table2
                  WHERE Table2.Column1 = 1
             AND Table2.Column2 = 2)

==>我有一个表(不是我的:-)),其中包含3个要链接的重要列:2个数字和序列号(保留某种历史记录)。 ==>我主要需要具有最高序列号(“最后一个”)的记录,并使用上述查询解决它。

但是如何在Linq(VB)中执行此操作? 我已经有了这样的事情:

Dim blah = (From oTmp In oDB.MyTable
           Where oTmp.Column1 = 1 And _
                 oTmp.Column2 = 2 And _
                 oTmp.SequenceNr = oDB.MyTable.Max(Function(x) x.SequenceNr)
          Select oTmp).ToList

任何想法? :)

格尔茨, 吉姆

1 个答案:

答案 0 :(得分:1)

您只需要对该内部查询添加Where()次调用:

oTmp.SequenceNr = oDB.MyTable.Where(Function(x) x.Column1 = 1 And x.Column2 =2)
                             .Max(Function(x) x.SequenceNr)