2015-05-29 52 views
-2

我想下面的查詢,以LINQ轉換:SQL查詢LINQ轉換與嵌套的SELECT語句

SELECT LV.* FROM LowerVehicles LV 
INNER JOIN (Select VSerial,MAX(updatedOn) MaxUpdatedOn from LowerVehicles group by vserial) LVG 
ON LV.VSerial = LVG.VSerial AND LV.updatedOn = LVG.MaxUpdatedOn 
+0

寫入第一查詢嵌套'select',將其保存在變量後使用可變寫入第二個'select'。 – Tigran

+2

你應該首先向我們展示你的努力。如果您在任何時候遭到襲擊,我們都會幫助您。 –

+0

這裏似乎沒有問題。向我們展示您嘗試過的方式以及您遇到的任何錯誤,我們很樂意伸出援助之手! – LiamK

回答

0

不知道你的實體類,這裏是一個近似值。您可以使用查詢語法或流利的語法。有時候一個比另一個更好,在連接和分組的情況下,我更喜歡使用查詢語法。

查詢語法

var query = from LV in LowerVehicles 
     join LVG in (
     from r in LowerVehicles 
     group r by r.vserial into g 
     select new {VSerial = g.Key, MaxUpdatedOn = g.Max(t => t.updatedOn)}) 
     on LV.VSerial equals LVG.Vserial 
     and LV.updatedOn equals LVG.MaxUpdatedOn 
     select LV; 

FLUENT SYNTAX

var lvg = LowerVehicles.GroupBy(t => t.vserial) 
         .Select(g => new { 
              VSerial = g.Key, 
              MaxUpdatedOn = g.Max(t => t.updatedOn) 
             }); 

var query = LowerVehicles.Join( 
           lvg, 
           a => new { a.VSerial, a.updatedOn }, 
           b => new { b.VSerial, b.MaxUpdatedOn }, 
           (a, b) => new { LV = a, LVG = b} 
          ) 
         .Select(t=> t.LV); 
0

像這樣的事情?

Something.LowerVehicles 
.Join(something.LowerVehicles.Select(y => new { y.VSerial, updatedOn = y.updatedOn.Max() }).GroupBy(z => z.VSerial), 
x => new { x.VSerial, x.updatedOn }, 
lvg => new { lvg.VSerial, lvg.updatedOn }, 
(x, y) => x)