7
votes

Linq rejoindre avec des ResulatsST distincts

J'ai une question de Linq. Je ne suis pas génial avec Linq. J'ai deux classes:

SELECT DISTINCT s.StateID
FROM Person p
JOIN States s ON (p.StateID = s.StateID)


0 commentaires

3 Réponses :


2
votes

comme ceci: xxx

Notez que vous devrez mettre en œuvre correctement égale et gethascode in La classe État . (Sauf si vous utilisez LINQ-TO-SQL ou des entités)

Si vous voulez simplement que vous souhaitez simplement implémenter les identifiants, vous n'avez pas besoin d'implémenter égale / gethashcode ; Vous pouvez simplement appeler xxx


0 commentaires

5
votes

Linq distinct est ennuyeux, vous devez implémenter l'interface IéqualityComparer sur la classe que vous souhaitez distinct (), puis la façon dont vous avez votre sélection distincte que vous faites référence aurait:

public class State : IEqualityComparer<State>
{
    int StateID {get;set;} 
    string StateName {get;set;} 

    public bool Equals(State x, State y) { return x.StateID == y.StateID && x.StateName == y.StateName; }
    public int GetHashCode(State obj) { return obj.StateId; }
}


1 commentaires

Merci d'avoir répondu, la clé que vous avez déjà indiquée est de créer votre propre implémentation.



10
votes

Essayez ceci:

var stateList = (from s in context.States
          join p in context.Persons on s.StateId equals p.StateId
          select s).Distinct();


0 commentaires