我不確定我錯過了什麼,但我一直在整個下午都在這個活動中摔跤。Linq to Entities Select Distinct
我公司的SQL Server視圖,看起來像這樣:
CompanyId varchar(30) NOT NULL
CompanyName varchar(100) NOT NULL
CompanyPriority int NULL
ConfigItem int NOT NULL
隨着數據,看起來有點像這樣:
00001 | Company One | 99 | 123
00001 | Company One | 99 | 456
00001 | Company One | 99 | 789
00002 | Company Two | 99 | 123
00002 | Company Two | 99 | 456
我試圖得到一個不同的列表公司。 SQL查詢我想exectute是
select distinct CompanyId, CompanyName,CompanyPriority from vwCompany
這給了我正是我想這將是
00001 | Company One | 99
00002 | Company Two | 99
結果但對我的生活,我不能找到LINQ查詢導致這個SQL,或任何產生相同結果的東西。
我發現的所有問題都使用分組,在我的單元測試中工作正常,但在針對實際數據庫執行時未能返回不同的結果。
編輯:
所以我嘗試了一些基於迄今爲止的答案。
Dim data = _miRepository.GetCompanies().
Select(Function(c) New With {
.companyId = c.CompanyId,
.companyName = c.CompanyName,
.companyPriority = c.CompanyPriority
}
).Distinct().ToList()
生成SQL
SELECT
1 AS [C1],
[Extent1].[CompanyId] AS [CompanyId],
[Extent1].[CompanyName] AS [CompanyName],
[Extent1].[CompanyPriority] AS [CompanyPriority]
FROM (SELECT
[vwCompany].[CompanyId] AS [CompanyId],
[vwCompany].[CompanyName] AS [CompanyName],
[vwCompany].[CompanyPriority] AS [CompanyPriority],
[vwCompany].[CiId] AS [CiId]
FROM [dbo].[vwCompany] AS [vwCompany]) AS [Extent1]
不具備的獨特運營商它在所有:(
是的,我在VB.NET這樣做只是爲了讓它很難找到很好的例子:\
編輯2:
我試圖得到儘可能接近埃裏克的js ANSW呃,我可以在VB中。
Dim data = (From c In _miRepository.GetCompanies()
Select New With {.companyId = c.CompanyId,
.companyName = c.CompanyName,
.companyPriority = c.CompanyPriority
}
).Distinct().ToList()
給我
SELECT
1 AS [C1],
[Extent1].[CompanyId] AS [CompanyId],
[Extent1].[CompanyName] AS [CompanyName],
[Extent1].[CompanyPriority] AS [CompanyPriority]
FROM (SELECT
[vwCompany].[CompanyId] AS [CompanyId],
[vwCompany].[CompanyName] AS [CompanyName],
[vwCompany].[CompanyPriority] AS [CompanyPriority],
[vwCompany].[CiId] AS [CiId]
FROM [dbo].[vwCompany] AS [vwCompany]) AS [Extent1]
仍然沒有明顯的關鍵字來找到:(
也許有在VB.NET一個微妙的差異,我很想念。
編輯3 :
爲了繼續這個應用程序的其餘部分我已經放棄了莫並在問題開始時使用sql語句創建了一個新視圖(vwDistinctCompanies)。
如果有人設法讓VB.NET在Sql視圖下工作,請告訴我。相當爲什麼這應該是如此困難的LINQ我不知道:(
萬一你還在嘗試,我自己嘗試了多個查詢,並嘗試了其他用戶的不同查詢。看起來@Eric J.給出的答案是使用'DISTINCT'關鍵字的SQL語句。我不知道如何將它翻譯爲VB,因爲我通過C運行它們# – Steven
感謝您的嘗試。我無法讓他們中的任何人做出明確的查詢。我不確定是因爲它在VB中,還是因爲它不符合視圖而不是表格。 – Nick
嘿,我跑了更多的疑問。看看我編輯的答案。希望能幫助到你。 – Steven