2017-05-23 3 views
0

Ich habe eine Liste von Themen und müssen diese Themen innerhalb der alphabetischen Gruppe Bereich anzeigen.Wie schreibe Abfrage für Gruppe mit im alphabetischen Bereich

Ich habe versucht, aber das wird für jedes einzelne Alphabet A-Z zurückgeben.

var sortedGroups = 
    from topic in topics 
    orderby topic.Title 
    group topic by topic.Last[0] into newGroup 
    orderby newGroup.Key 
    select newGroup; 
foreach (var tGroup in sortedGroups) 
{ 
    Console.WriteLine(tGroup.Key); 
    foreach (var t in tGroup) 
    { 
     Console.WriteLine("{0}", t.Title); 
    } 
} 

gewünschte Ausgabe sieht aus wie

  • ABC
    • Adeno
    • African
    • Air
    • Blau
    • Koch
    • Pflege
  • DEF
    • Deer
    • Egg
    • Elefant
    • Fun
    • Fisch
    • Fluss
  • GHI
  • JKL
+0

Was haben Sie bisher versucht? –

Antwort

1

Ok, ich weiß, das ist hässlich, aber es funktioniert .....

var q = from t in topics 
      orderby t.Title 
      group t by (((int)t.Title[0])+1) /3; 
  • (int)t.Title[0]) - Schaltet den ersten Buchstaben in einer Reihe. ("A" = 65, "B" = 66, ...)
  • +1 - Korrektur der Gruppen richtig zu machen ("A" ist jetzt 66, "B" = 67 usw.)
  • /3 - Gibt drei aufeinanderfolgende Buchstaben der gleiche Wert (A, B, C jetzt = 22)
+0

Perfekte Antwort! Danke Kumpel!! – imdadhusen

Verwandte Themen