LINQ To SQL Динамическая сортировка - PullRequest
2 голосов
/ 24 сентября 2010

Я хочу передать поле сортировки и направление динамически в коды LINQ to SQL.Но я не мог найти способ так выполнить, потому что, если бы я не мог писать пользователям. OrderBy (d => Поле );

Есть ли способ передать динамическое поле для сортировки?Спасибо.

private static IQueryable<user> GetUserData(String Field, String Direction)
{
    UserDataContext dc = new UserDataContext();

    var users = from d
                    in dc.users
                orderby Field ascending
                select d;

    if (Direction == "ascending")
    {
        return users.OrderBy(d => d.userName);
    }
    else
    {
        return users.OrderByDescending(d => d.userName);
    }
}

1 Ответ

1 голос
/ 24 сентября 2010

Метод расширения Queryable.OrderBy принимает параметр типа Expression<Func<TSource, TKey>>. Его не обязательно создавать с помощью лямбда-выражения, но его можно создать вручную с помощью класса Expression , который позволяет динамически создавать любые выражения в коде. Это можно использовать для создания динамического метода OrderBy.

Я также читал о динамической библиотеке запросов LINQ в недавнем вопросе, в котором, похоже, есть метод, который делает именно это. По-видимому, он включен в качестве примера кода в некоторый пример коллекции для VS2008, для получения дополнительной информации прочитайте ссылку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...