Как отсортировать список с помощью LINQ? - PullRequest
0 голосов
/ 24 апреля 2010

У меня есть запрос LINQ, который заполняет список дизайнеров.

Поскольку я использую фильтры ниже, моя сортировка работает не так, как я хочу.

Мой вопрос, учитывая приведенный ниже код, как мне лучше отсортировать этот список по факту или отсортировать при запросе?

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

 List<TBLDESIGNER> designers = new List<TBLDESIGNER>();
 designers = 'calls my procedure below and comes back with an unsorted list of designers'
 designers.Sort((x, y) => string.Compare(x.FIRST_NAME, y.LAST_NAME));

Мой запрос выглядит следующим образом:

List<TBLDESIGNER> designer = null;

using (SOAE strikeOffContext = new SOAE())
{
   //Invoke the query
   designer = AdminDelegates.selectDesignerDesigns.Invoke(strikeOffContext).ByActive(active).ByAdmin(admin).ToList();
}

Делегат:

public static Func<SOAE, IQueryable<TBLDESIGNER>> selectDesignerDesigns =
        CompiledQuery.Compile<SOAE, IQueryable<TBLDESIGNER>>(
        (designer) => from c in designer.TBLDESIGNER.Include("TBLDESIGN")
                      orderby c.FIRST_NAME ascending
                      select c);

Фильтр по активному:

public static IQueryable<TBLDESIGNER> ByActive(this IQueryable<TBLDESIGNER> qry, bool active)
    {
        //Return the filtered IQueryable object
        return from c in qry
               where c.ACTIVE == active
               select c;

    }

Фильтр по Admin:

public static IQueryable<TBLDESIGNER> ByAdmin(this IQueryable<TBLDESIGNER> qry, bool admin)
{
    //Return the filtered IQueryable object
    return from c in qry
           where c.SITE_ADMIN == admin
           select c;

}

Заранее спасибо, Билли

1 Ответ

3 голосов
/ 24 апреля 2010

В вашем сообщении много чего происходит, но я решил ответить на заданный вопрос:

Linq - Как отсортировать список

Используйте декларативные методы OrderBy и ThenBy.

designers = designers
  .OrderBy(td => td.FirstName)
  .ThenBy(td => td.LastName)
  .ToList();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...