C# 使用嵌套select语句的SQL查询到LINQ转换
我想将以下查询转换为LINQ:C# 使用嵌套select语句的SQL查询到LINQ转换,c#,linq,C#,Linq,我想将以下查询转换为LINQ: 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 像这样的 Something.LowerVehicles .Join(s
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
像这样的
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)
不知道实体类,这里是一个近似值。您可以使用查询语法或流利语法。有时一个比另一个更好,在连接和分组的情况下,我更喜欢使用查询语法 查询语法 流畅的语法
首先为嵌套的select编写查询,在使用该变量编写第二个select后将其保存在变量中。您应该首先向我们展示您的工作。如果你在任何时候被击中,我们都会帮助你。这里似乎没有问题。向我们展示您的尝试和您看到的任何错误,我们很乐意伸出援助之手!
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;
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);