将sql语句转换为linq到实体vb.net

将sql语句转换为linq到实体vb.net,.net,linq,.net,Linq,我正在尝试将以下sql语句转换为linq to entitys vb.net。我在谷歌上搜索也没用。sql将删除重复的residentkey记录,并返回最新版本号为的顶级residentkey SELECT * FROM dbo.BI_Bond z WHERE z.id IN (SELECT TOP 1 x.id FROM dbo.BI_Bond x WHERE x.residentkey = z.residentkey ORDER BY Version DESC )

我正在尝试将以下sql语句转换为linq to entitys vb.net。我在谷歌上搜索也没用。sql将删除重复的residentkey记录,并返回最新版本号为的顶级residentkey

      SELECT * FROM   dbo.BI_Bond z
     WHERE z.id IN (SELECT TOP 1 x.id FROM dbo.BI_Bond x 
WHERE x.residentkey = z.residentkey ORDER BY Version DESC )

任何帮助都将不胜感激。

也许是这样的

var res = from b from BI_Bond
          where BI_Bond.Select(i => i.residentkey).Contains(b.residentkey).OrderByDesc(i.Version)
          select b;
我还没有整理过这篇文章,但我相信它已经结束了

为成为我的第一个而干杯,所以请回答以下问题:

Dim mv = From c In BI_Bond Group By c.residentKey Into version=Max(c.version)
Dim u = From a In BI_Bond Join b In mv On a.residentKey Equals b.residentKey And a.version Equals b.version Select a

这将为每个residentKey返回最新版本的行。

谢谢Mark,这就成功了。当你这样写的时候,它看起来很简单。我是linq的新手,所以这次合并对我来说是一个新概念。根据您的经验,最好的网站是去哪里学习linq to entities。C#和vb.netSorry,这里的自学者:我刚刚了解了MS的来源,特别是考虑到它是基于SQL的。谢谢你的回复,我试着把这个翻译成vb.net,但不知道比较结果。我接受了另一个答案。