Ich versuche, etwas ähnliches zu diesem Beispielcode von Phil Haack zu VB zu tun, und LINQ Orderby gibt mir Probleme - und ich kann nicht herausfinden, wie das geht. Ganze Methode für Compleynes gepostet.LINQ - Dynamic OrderBy in VB.Net
Dies ist die C# -Version:
public ActionResult DynamicGridData(string sidx, string sord, int page, int rows)
{
var context = new HaackOverflowDataContext();
int pageIndex = Convert.ToInt32(page) - 1;
int pageSize = rows;
int totalRecords = context.Questions.Count();
int totalPages = (int)Math.Ceiling((float)totalRecords/(float)pageSize);
var questions = context.Questions.OrderBy(sidx + " " + sord).Skip(pageIndex * pageSize).Take(pageSize);
var jsonData = new
{
total = totalPages,
page = page,
records = totalRecords,
rows = (
from question in questions
select new
{
i = question.Id,
cell = new string[] { question.Id.ToString(), question.Votes.ToString(), question.Title }
}).ToArray()
};
return Json(jsonData);
}
mit dieser Linie Mein Problem ist ...:
var questions = context.Questions.OrderBy(sidx + " " + sord).Skip(pageIndex * pageSize).Take(pageSize);
In VB.Net SortiertNach akzeptiert keine einen String als Wert - und es scheint, um das in C# zu tun (oder ich vermisse etwas).
(Bitte nicht die Verwendung von VAR ist hier nicht das Thema, ich habe das abgedeckt :).)
Edit: Dies ist der Fehler, den ich bekommen (ich kann einfach nicht kompilieren):
Überlastung Auflösung fehlgeschlagen, da nicht zugänglich ‚OrderBy‘ kann mit diesen Argumenten aufgerufen werden ...
Screenshot von kompletter Fehlermeldung: alt text http://i39.tinypic.com/u0wg0.png
Edit2:
Weitere Informationen, wie angefordert. Sidx enthält den Namen einer Spalte zu sortieren, indem sord ASC- oder DESC enthält
Die VB-Code:
Function MemberData(ByVal sidx As String, ByVal sord As String, ByVal page As Integer, ByVal rows As Integer) As JsonResult
Dim allRecords As IQueryable(Of Models.Member) = Me.MemberRepository.FindAllMembers
Dim currentPageRecords As IQueryable(Of Models.Member)
Dim pageIndex As Integer = page - 1
Dim pageSize As Integer = rows
Dim totalRecords As Integer = allRecords.Count
Dim totalPages As Integer = CInt(Math.Ceiling(totalRecords/pageSize))
Dim orderBy As String = sidx + " " + sord
currentPageRecords = allRecords.OrderBy(Function(m) orderBy).Skip(pageIndex * pageSize).Take(pageSize)
Dim jsonData = New With { _
.total = totalPages, _
.page = page, _
.records = totalRecords, _
.rows = New ArrayList _
}
For Each member As Models.Member In currentPageRecords
jsonData.rows.Add(New With {.id = member.MemberId, .cell = GenerateCellData(member)})
Next
Return Json(jsonData)
End Function
Was ist der Fehler, die Sie sehen, ? – shahkalpesh
Nur ein wenig mehr Informationen in der ursprünglichen Frage hinzugefügt. :) – Kjensen
Was enthalten die Strings Sidx und Sord? – CoderDennis