我不确定我错过了什么,但我一直在整个下午都在这个活动中摔跤。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