linq查询,将sql查询转换为linq for VB.net
我试图从一个表中获取字段,从另一个表中获取max(expirationDate)。这是我最初的linq查询:linq查询,将sql查询转换为linq for VB.net,linq,Linq,我试图从一个表中获取字段,从另一个表中获取max(expirationDate)。这是我最初的linq查询: tanks = (From t In db.Table1 _ Where t.CompanyID = txtCompanyID.Text.Trim() _ Join d In db.Table2 On t.TankID E
tanks = (From t In db.Table1 _
Where t.CompanyID = txtCompanyID.Text.Trim() _
Join d In db.Table2 On t.TankID Equals d.TankID
Order By d.ExpireDate Descending
Select t).ToList
这将返回多个expireDate,我只希望每个记录的最大值(expireDate)
下面的sql查询可以工作,我只需要将其放入linq查询中
select t1.*,
(Select MAX(Table2.ExpireDate)
from Table2 as t2
where t2.TankID = t1.TankID)
as max_expire_date
from Table1 as t1
where t1.CompanyID = '5467'
order by t1.CargoTankID
有人知道怎么把这个带进linq吗?谢谢
tanks = db.Table1.Where( t => t.CompanyId == txtCompanyID.Text.Trim() )
.Join( db.Table2, t1 => t1.TankID, t2 => t2.TankID, (t1,t2) => new { Company = t1, t2.ExpireDate } )
.GroupBy( t => t.Company, (c,e) => new { Company = c Expiration = e.Max( x => x.ExpireDate ) } )
.ToList();
VB的最佳猜测
Dim tanks = db.Table1.Where( Function(t) t.CompanyId == txtCompanyID.Text.Trim() ) _
.Join( db.Table2, Function(t1) t1.TankID, Function(t2) t2.TankID, Function(t1,t2) New Thing With { .Company = t1, .ExpireDate = t2.ExpireDate } ) _
.GroupBy( Function(t) t.Company, Function(c,e) New Thing With { .Company = c, .Expiration = e.Max( Function(x) x.ExpireDate ) } ) _
.ToList()
您知道如何在vb.Net中执行此操作吗。我不熟悉linq,但我知道c#和vb之间的语法是不同的,应该非常相似,lambda表达式只需要翻译成适当的语法。我认为我添加的内容应该有效。