2015-05-04 112 views
0

我有以下SQL查询,我需要转换成LINQ与VB.NET需要SQL查询转换为LINQ

SELECT * 
FROM (SELECT Id 
     ,LocationCode 
     ,LocationName 
     ,ContactName 
     ,ContactEmail 
     ,Comments 
     ,SBUName 
     ,CreatedBy 
     ,CreatedDtm 
     ,ModifiedBy 
     ,ModifiedDtm 
     ,ROW_NUMBER() OVER (PARTITION BY LocationCode ORDER BY ID) AS RowNumber 
FROM testDB) as rows 
    WHERE ROWNUMBER = 1 

有位置代码很多重复,所以我只是想显示的一个记录每个用户都可以编辑这些信息。一旦他们编辑,我将保存该特定位置代码的所有记录的信息。

这里我不能使用DISTINCT,它仍然会带回所有的数据,因为CreatedBy/ModifiedBy是不同的。

通过使用下面的LINQ查询来选择所有的数据,有没有一种方法可以得到DISTINCT记录LocationCode出来呢?

queryLocMaint = From MR In objcontextGSC.TestDB 
           Select MR.Id, 
            MR.LocationCode, 
            MR.LocationName, 
            MR.SBUName, 
            MR.ContactName, 
            MR.ContactEmail, 
            MR.Comments, 
            MR.CreatedBy, 
            MR.CreatedDtm, 
            MR.ModifiedBy, 
            MR.ModifiedDtm() 
+0

[Distinct in Entity framework](http://stackoverflow.com/questions/8536129/distinct-in-entity-framework)可能的重复。在LINQ到SQL中,你可以做同样的事情。 –

回答

1

ROW_NUMBER在LINQ是不支持,也许你可以使用这个方法GROUP BY

Dim q = From mr In objcontextGSC.TestDB 
     Group mr By mr.LocationCode Into LocationCodeGroup = Group 
     Select LocationCodeGroup.OrderBy(Function(mr) mr.Id).First() 

这需要通过ID下令各LocationCode组的第一行。

+0

感谢蒂姆这工作正是我需要它。只需将mr.Id更改为mr.LocationCode并显示所需的全部内容即可。 – user1515742