Eine funktionierende eindeutige LINQ-Abfrage in C #

Wie ich am Montag und in meinem Visual Studio 2008-Test erwähnt habe, habe ich mit den Feinheiten von LINQ-Abfragen zu kämpfen. In einem Talkback-Kommentar zu meiner Rezension wies mich "CSharper" auf eine Lösung hin, um das LINQ-Äquivalent einer SQL- Abfrage " SELECT DISTINCT " zu finden: einen LINQ .Distinct () -Methodenaufruf für die Abfrage anheften , die eingeschlossen werden muss Klammern.

Das hat funktioniert, aber es hat die Sortierreihenfolge zerstört, die durch eine vorherige orderby- Klausel erstellt wurde. Natürlich musste ich auch lernen, die LINQ .OrderBy () -Methode zu verwenden, damit ich die Sortierung nach dem Sieben anwenden konnte. Das war etwas schwieriger, da .OrderBy () einen Lambda-Ausdruck verwendet und ich mit dieser neuen C # -Syntax noch nicht vertraut war.

Trotzdem habe ich es geschafft. Es ist nicht schön, aber das ist wirklich Version 1.0 von LINQ.

var qAV = (von ai in db.AppInfos join acai in db.AppCatAIs auf ai.Prodid entspricht acai.Prodid join ac in db.AppCategories auf acai.acatid entspricht ac.acatid wobei ac.Category == category1 || ac.Category == category2 select ai) .Distinct () .OrderBy (n => n.ProductName);