Wie handle paging IQueryable mit Linq To Entities? (problem mit OrderBy -)

Ich bin derzeit am erstellen einer einfachen ASP.NET MVC-Website mithilfe von Linq to Entities. Mein Erster Ausflug in diese Welt war nerd Abendessen, das ist, wo ich fand die paginierte Liste code, den ich bin versucht zu verwenden. Der code sieht wie folgt aus:

public class PaginatedList<T> : List<T>
{

    public int PageIndex { get; private set; }
    public int PageSize { get; private set; }
    public int TotalCount { get; private set; }
    public int TotalPages { get; private set; }

    public PaginatedList(IQueryable<T> source, int pageIndex, int pageSize)
    {
        PageIndex = pageIndex;
        PageSize = pageSize;
        TotalCount = source.Count();
        TotalPages = (int)Math.Ceiling(TotalCount / (double)PageSize);

        this.AddRange(source.Skip(PageIndex * PageSize).Take(PageSize));
    }

    public bool HasPreviousPage
    {
        get
        {
            return (PageIndex > 0);
        }
    }

    public bool HasNextPage
    {
        get
        {
            return (PageIndex + 1 < TotalPages);
        }
    }
}

Das problem ist, ich bin mit dem entity framework und der obige code löst die folgende Fehlermeldung:

Die Methode "Skip" ist nur für die unterstützten sorted input in LINQ to Entities. Die Methode 'OrderBy' muss aufgerufen werden, bevor die Methode "Überspringen".

Nicht wissen, die ins und outs der Linq, ich bin mir nicht sicher, wie Sie Sie hinzufügen in einer orderby-Klausel, wenn ich nicht weiß, was die Spaltennamen werden in der oben beschriebenen Methode, was ist generic.

Dank!

InformationsquelleAutor Sergio | 2009-10-05
Schreibe einen Kommentar