2017-10-19 21 views
0

je suis coincé sur ma requête sur une sélection des données distinctes ..Sélectionner des données distinctes sur requête

Supposons Datas

  • Peter
  • Jose
  • Joseph
  • Peter
  • Juan
  • Michael
  • Peter

Mais ils ont différents de ID (Primary key ID on SQL Table)

Voici ce que j'ai essayé jusqu'à présent

var query = (from a in db.Employees 
      join b in db.People on a.PersonId equals b.PersonId 
      where a.IsSeparated != true 
      select b).Distinct(); 

et

var query = db.Employees.Join(db.People, x => x.PersonId, y => y.PersonId, (x, y) => new { x, y }) 
       .Where(z => z.x.IsSeparated != true).GroupBy(t => t.y.CompleteName).Select(x => x.FirstOrDefault()); 

mais les deux requêtes affichant toujours tous Les données. Ce que je veux sur ma requête est s'il y a une donnée en double qui la rend distincte.

Si vous avez des commentaires sur lambda s'il vous plaît expliquer que je suis encore en train d'apprendre comment l'utiliser.

+0

double possible de [LINQ se joindre à resultset distinct] (https://stackoverflow.com/questions/3373087/linq-join-with-distinct -resultset) – kranz

Répondre

2

Vous pouvez essayer avec LINQ suivante:

var query = (from a in db.Employees 
      join b in db.People on a.PersonId equals b.PersonId 
      where a.IsSeparated != true 
      select b).GroupBy(x=> new { x.PersonId}).Select(x=>x.First()); 
+0

cela signifie de grouper le personId droit? – KiRa

+0

ouais, il serait groupe par PersonId. –

+0

les noms en double ont des ID différents. – KiRa

0
var query = (from a in db.Employees 
      join b in db.People on a.PersonId equals b.PersonId 
      where a.IsSeparated != true 
      select b) 
      .GroupBy(x=> x.CompleteName) 
      .Select(grp => grp.Value.First()); 
+0

Désolé, une erreur 'ne peut pas convertir lambda expre ssion pour taper une chaîne car ce n'est pas un type de délégué 'on' .Select' partie – KiRa