Linq to entities Select Distinct

Je ne suis pas sûr de ce que je suis absente, mais j'ai été raclée à ce seul tout l'après-midi.

J'ai un Serveur Sql de la vue des Entreprises, qui ressemble à ceci:

CompanyId varchar(30) NOT NULL
CompanyName varchar(100) NOT NULL
CompanyPriority int NULL
ConfigItem int NOT NULL

Avec des données qui ressemble un peu à ceci:

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

Je vais essayer d'obtenir une liste distincte des entreprises. La requête sql je veux exectute est

select distinct CompanyId, CompanyName,CompanyPriority from vwCompany

qui me donne exactement les résultats que je veux qui serait

00001 | Company One | 99
00002 | Company Two | 99

Mais pour la vie de moi je ne peux pas trouver la requête LINQ que les résultats de cette sql, ou tout ce qui produit les mêmes résultats.

À toutes les questions que j'ai trouvé l'utilisation de regroupement qui fonctionne très bien dans mes tests d'unité, mais ne parvient pas à retourner distinctes résultats lorsqu'elle est exécutée à l'encontre d'une base de données réelle.

EDIT:

Donc j'ai essayé quelques petites choses sur la base des réponses à ce jour.

Dim data = _miRepository.GetCompanies().
  Select(Function(c) New With {
           .companyId = c.CompanyId,
           .companyName = c.CompanyName,
           .companyPriority = c.CompanyPriority
         }
       ).Distinct().ToList()

génère le 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]

qui n'ont pas l'opérateur distinct du tout 🙁

Et oui, je fais cela dans VB.NET juste pour rendre les choses plus difficile de trouver de bons exemples :\

EDIT 2:

Je suis en train d'essayer de se rapprocher d'Eric Js répondre comme je peux en VB.

Dim data = (From c In _miRepository.GetCompanies()
            Select New With {.companyId = c.CompanyId,
                             .companyName = c.CompanyName,
                             .companyPriority = c.CompanyPriority
                            }
                          ).Distinct().ToList()

me donne

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]

Toujours pas de mot-clé distinct à être trouvé 🙁

Peut-être il ya une différence subtile dans VB.NET que je suis absent.

EDIT 3:

Afin de progresser avec le reste de cette application, j'ai renoncé, pour le moment, et créé un nouveau point de vue (vwDistinctCompanies) à l'aide de l'instruction sql au début de la question.

Si quelqu'un parvient à le faire fonctionner dans VB.NET à l'encontre d'une vue Sql s'il vous plaît laissez-moi savoir. Tout à fait pourquoi cela devrait-il être si difficile dans LINQ, je n'ai aucune idée 🙁

Juste au cas où vous êtes encore en train d'essayer, j'ai essayé plusieurs requêtes moi-même et le différent de ceux des autres utilisateurs. Il semble que la réponse par @Eric J. est de me donner l'instruction SQL qui a utilisé le DISTINCT mot-clé. Je ne sais pas comment traduire que de VB que j'ai couru à travers de C#
Merci d'essayer. Je ne pouvais pas obtenir l'un d'eux pour faire une requête distinct. Je ne sais pas si c'est parce que c'est en VB ou si c'est parce que c'est contre une vue plutôt qu'un tableau.
Hey, j'ai couru plus de requêtes. Regarde mon édité réponse. Espérons que cela aide.

OriginalL'auteur Nick | 2012-11-27