2015-05-04 83 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