何が欠けているのかわかりませんが、午後中ずっとこれにぶつかっています。
次のような会社のSQLServerビューがあります。
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クエリは
select distinct CompanyId, CompanyName,CompanyPriority from vwCompany
これは私が望む結果を正確に与えてくれます
00001 | Company One | 99
00002 | Company Two | 99
しかし、私の人生では、このSQLを生成するLINQクエリ、または同じ結果を生成するものを見つけることができません。
私が見つけたすべての質問は、単体テストでは正常に機能しますが、実際のデータベースに対して実行すると明確な結果を返さないグループ化を使用しています。
編集:
それで、私はこれまでの答えに基づいていくつかのことを試みました。
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:
私はVBでできる限りEricJsの答えに近づこうとしています。
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)を作成しました。
誰かがSQLビューに対してVB.NETでこれを機能させることができたら、私に知らせてください。なぜこれがLINQでそれほど難しいのか、私にはわかりません:(