Linq to Sql选择连接表中的最后一行

时间:2014-04-18 07:52:23

标签: c# linq-to-sql

我正在尝试使用linq到sql

选择多个表值

这是我写的代码:

var query = (from p in context.Personel
join y in context.PerLanguage on p.ID equals y.ID
where p.Resign == false && p.KGBT > new DateTime(2012,1,15)
select new{ p.ID,p.NameSurname, y.EarnedDate,y.Degree}).ToList();

PerLanguage对Personel有一个外键“ID”。因此,PerLanguage表可以包含2个或更多具有相同ID的数据。我希望这段代码能够返回一个项目列表,其中包含了“最后”输入的不同人的语言数据。

最好的方法是什么?

1 个答案:

答案 0 :(得分:0)

尝试以下查询..基本上我们进行连接,得到平坦的结果,按ID对其进行分组,然后对ID中的结果进行降序排序,并选择每个分组结果中的第一条记录。

var results = context.Personel.Where(p => !p.Resign && p.KGBT > new 
DateTime(2012,1,15)).Join(context.PerLanguage, p => p.ID, pl => pl.ID, (p, pl) => 
new { p.ID, p.NameSurname, pl.EarnedDate, pl.Degree }).GroupBy(r => r.ID)
.Select(g => g.OrderByDescending(r => r.EarnedDate).First()).ToList();