2016-11-11 3 views
2

Ich habe Daten in einer allgemeinen Liste namens "Zuweisung" wie in der Originaltabelle gezeigt. Sie möchten nach ID gruppieren und nur einen Datensatz basierend auf der Bestellung US-UK-Indien anzeigen.LINQ-Gruppe nach ID - Distinct nach Bestellung

Das Ergebnis sollte von der ersten Tabelle in die zweite umgewandelt werden, wie im angehängten Bild gezeigt.

enter image description here

+0

Ich denke, Sie benötigen, eindeutige ID und Details des ersten Eintrags zusammen mit ihm. Recht? – Raghu

+1

Kannst du die Regel beschreiben, wie es aus dem Beispiel nicht klar ist? – Enigmativity

+0

Was ist Ihr logisches Muster hinter dieser Abfrage? Können Sie Ihre Frage bestätigen oder bearbeiten? –

Antwort

1

Versuchen Sie folgendes: SQL-ähnliche Syntax.

from a in Assignments 
group a by a.Id into gr select gr.FirstOrDefault() 

Lambda Ausdruck:

Assignments 
    .GroupBy (a => a.Id) 
    .Select (gr => gr.FirstOrDefault()) 
+0

Sind Sie sicher, dass diese Abfrage korrekte Ausgabe nach Autor –

+0

geben wird, denke ich, das ist was Autor will! – James

+0

Diese Abfrage ergibt nur eine Zeile, aber der Autor erwartet das Ergebnis als Tabelle. – Raghu

0

Versuchen Sie dieses, seine Werke. Ich hoffe, das ist was du brauchst.

var query01 = context.FirstTable 
      .GroupBy(p => p.ID 
      ,(ky, el) => new { ky.Value , FirstCountry = el.Select(p => Country).Take(1)}); 

var Result = query01 
      .Join(context.FirstTable 
      , ul => new 
      { 
      Id = ul.Value 
      ,Country = ul.FirstCountry.FirstOrDefault() 
      } 
      , fl => new 
      { 
      Id = (int)fl.ID 
      , Country = fl.Country 
      } 
      , (ul, fl) => new { fl }).ToList();