2014-05-15 29 views
9

Ich habe eine Produkttabelle und möchte Daten alphabetisch sortieren lassen. Aber wenn ich diese Abfrage schreibe, kommen sie immer noch mit ID. Ich überprüfe viel Seite in Google, kann aber keine Quelle finden.Linq Sortieren nach alphabetisch

var product = Db.tablename 
       .Where(s => s.colum == DropDownList2.SelectedValue) 
       .OrderBy(s=> s.Name); 
+1

wo verwenden Sie das Ergebnis des Produkts? Ich meine, versuchen Sie, Ihre Daten an eine Gridview oder an ein anderes Steuerelement zu binden? Könnten Sie bitte auch diesen Code posten? Vielen Dank ! – Christos

+0

Ja, ich sende Restul an den Datalist. – Seration

Antwort

12

Diese Abfrage

var product = Db.tablename 
       .Where(s => s.colum == DropDownList2.SelectedValue) 
       .OrderBy(s=> s.Name); 

nicht ausgeführt werden, bis er gefragt wird. Also müssen Sie es in den folgenden ändern:

var product = Db.tablename 
       .Where(s => s.colum == DropDownList2.SelectedValue) 
       .OrderBy(s=> s.Name).ToList(); 

Der Grund, warum das passiert ist, dass Sie eigentlich nur eine Abfrage deklariert haben. Ich meine, du hast es nicht ausgeführt. Das ist die Natur von LINQ-Abfragen, die in technischen Begriffen als Ausführung bezeichnet werden. Auf der anderen Seite, wenn Sie die Methode ToList() am Ende Ihrer Abfrage aufrufen, werden Sie die sofortige Ausführung dieser Abfrage auslösen, und es wird ein List des gleichen Typs mit s.Name sein.

+0

Ich bekomme diesen Fehler System.Data.SqlClient.SqlException: Die Datentypen text, ntext und image können nicht verglichen oder sortiert werden, außer Wenn Sie den Operator IS NULL oder LIKE – Seration

+1

verwenden, ändern Sie den Typ in Ihrer Datenbank in nvarchar. Dies hat keinen Einfluss auf Ihre Daten und löst Ihr Problem. Ich wusste nichts über diesen Fehler, aber nachdem ich etwas gegoogelt hatte, fand ich diese http://forums.asp.net/t/1481629.aspx?Help+Again, die den obigen Vorschlag enthält. – Christos

+0

Colom Typ war Text ich änderte es varchar max und fügte ToList() hinzu. Es funktioniert super :) Vielen Dank – Seration

1

Sie müssen ToList verwenden, um die Sortierung auszuführen.

var product = Db.tablename 
       .Where(s => s.colum == DropDownList2.SelectedValue) 
       .OrderBy(s=> s.Name).ToList(); 

Die Reihenfolge von tut nichts, nur führt die Abfrage, die ToList wird die Sortierung für die ursprüngliche Abfrage tun.

+0

Ich erhalte diesen Fehler System.Data.SqlClient.SqlException: Die Datentypen text, ntext und image können nicht verglichen oder sortiert werden, außer wenn IS NULL oder LIKE-Operator verwendet wird. – Seration

+0

Welche Sql-Version verwenden Sie? Es gibt einige Einschränkungen für ältere Versionen von SQL, die diesen Fehler verursachen können – Fals

+0

Host-Unternehmen mit Mssql2012:/ – Seration

Verwandte Themen