需要将SQL Query转换为LINQ

时间:2015-05-04 14:38:05

标签: vb.net linq

我有以下SQL查询需要转换为使用VB.NET的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查询来选择所有数据,有没有办法可以从中获取LocationCode的DISTINCT记录?

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()

1 个答案:

答案 0 :(得分:1)

LINQ不支持

ROW_NUMBER,也许您可​​以使用此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组的第一行。