linq查询,将sql查询转换为linq for VB.net

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

我试图从一个表中获取字段,从另一个表中获取max(expirationDate)。这是我最初的linq查询:

                            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表达式只需要翻译成适当的语法。我认为我添加的内容应该有效。