C# LINQ联接表,然后是groupby主表

C# LINQ联接表,然后是groupby主表,c#,asp.net,linq-to-sql,C#,Asp.net,Linq To Sql,我试图输出一个IDNums+Name+Max(超时时间)表。我只想要每个ID的最大时间更改值,因为每个ID有多个时间条目。到目前为止,我已经有了。但是,与ID关联的名称位于单独的表中。以下是我尝试过的: from IO_Time in db.IO_Times join NameTable in db.NamesTable on IO_Time.IDNum equals NameTable.IDNum orderby SqlMethods.DateDiffMinute(IO_Time.TimeIn

我试图输出一个IDNums+Name+Max(超时时间)表。我只想要每个ID的最大时间更改值,因为每个ID有多个时间条目。到目前为止,我已经有了。但是,与ID关联的名称位于单独的表中。以下是我尝试过的:

from IO_Time in db.IO_Times
join NameTable in db.NamesTable on IO_Time.IDNum equals NameTable.IDNum
orderby SqlMethods.DateDiffMinute(IO_Time.TimeIn, IO_Time.TimeOut) descending
group IO_Time by IO_Time.IDNum into list
select new
{
  ID = list.Key,
  Name = NameTable.Name
  Time = list.Max(t=> t.TimeOut-t.TimeIn)

});
当然,NameTable.Name在该上下文中不存在。我怎样才能解决这个问题?

我认为这个应该可以解决。。。基本上,它改变了组键,以包括名称以及。。。考虑到你已经加入了,这应该没问题

from IO_Time in db.IO_Times
join NameTable in db.NamesTable on IO_Time.IDNum equals NameTable.IDNum
orderby SqlMethods.DateDiffMinute(IO_Time.TimeIn, IO_Time.TimeOut) descending
group IO_Time by new { IO_Time.IDNum, NameTable.Name } into list
select new
{
  ID = list.Key.IDNum,
  Name = list.Key.Name
  Time = list.Max(t=> t.TimeOut-t.TimeIn)    
});