Невозможно выполнить ORDERBY для моих данных EF4 - PullRequest
1 голос
/ 03 мая 2010

У меня запрос к EF4 с использованием STE, и у меня возникла проблема с пользовательской сортировкой. При отладке этого я удалил динамическую сортировку и жестко кодирую ее, и у меня все еще есть проблема. Если я поменяю / раскомментирую строки var results = xxx в GetMyBusinesses(), мои результаты не сортируются по-разному - они всегда сортируются по возрастанию.

К вашему сведению, Name - это поле varchar(200) в SQL 2008 в моей таблице Business.

private IQueryable<Business> GetMyBusinesses(MyDBContext CurrentContext)
{

    var myBusinesses = from a in CurrentContext.A
                       join f in CurrentContext.F
                           on a.FID equals f.id
                       join b in CurrentContext.Businesses
                           on f.BID equals b.id
                       where a.PersonID == 52
                       select b;

    var results = from r in myBusinesses
              orderby "Name" ascending
              select r;

    //var results = from r in results
    //          orderby "Name" descending
    //          select r;

    return results;
}

private PartialEntitiesList<Business> DoStuff()
{
    var myBusinesses = GetMyBusinesses();
    var myBusinessesCount = GetMyBusinesses().Count();

    Results = new PartialEntitiesList<Business>(myBusinesses.Skip((PageNumber - 1)*PageSize).Take(PageSize).ToList())
                  {UnpartialTotalCount = myBusinessesCount};

    return Results;
}

public class PartialEntitiesList<T> : List<T>
{
    public PartialEntitiesList()
    {
    }

    public PartialEntitiesList(int capacity) : base(capacity)
    {
    }

    public PartialEntitiesList(IEnumerable<T> collection) : base(collection)
    {
    }

    public int UnpartialTotalCount { get; set; }
}

1 Ответ

0 голосов
/ 03 мая 2010

Очевидно, что предложение OrderBy в виде строки недопустимо (я думал, что проверял это раньше ?!). Если я изменю свой запрос Linq на следующий, он будет работать:

var results = from r in myBusinesses
          orderby r.Name ascending
          select r;

Это не решает мою проблему, но отвечает на этот конкретный вопрос. Я опубликую еще один вопрос, связанный с моей проблемой.

...