Я пишу пользовательское веб-приложение (административная утилита), которое запрашивает таблицу базы данных SQL Server, и я даю пользователям возможность применять свои (ограниченные) пользовательские сортировки и фильтры к возвращаемой информации.На странице отправки можно выбрать до 3 критериев сортировки (например, Сортировка 1, Сортировка 2, Сортировка 3), используя раскрывающиеся списки в форме HTML.Они также должны указывать одну букву алфавита (через URL), и приложение должно возвращать список данных, где поле «Сортировка 1» начинается с буквы (фильтрация ВСЕГДА по полю Сортировка 1).
Так, например, они могли бы выбрать возврат списка всех клиентов, чей Город начинается с буквы «R», отсортированный по Городу, затем Штату, а затем Имени.Или они могут вернуть всех клиентов, чье имя начинается с «F», отсортировано по имени, затем по адресу, а затем по идентификатору клиента.
Я полностью понимаю, как это сделать с фиксированными (известными) полями / свойствами;
var _data = _data.Where(d => d.Name.StartsWith(letter)).OrderBy(p => p.Name).ThenBy(p => p.Address).ThenBy(p => p.CustomerID);
и т. Д.Но в моем случае свойства таблицы (поля) для сортировки / фильтрации не известны в явном виде;они доступны только для моего приложения в виде строк.То, что я хотел бы сделать, это ...
var _data = _data.Where(d => d.["Sort1"].StartsWith(letter)).OrderBy(p => p.["Sort1"]).ThenBy(p => p.["Sort2"]).ThenBy(p => p.["Sort3"]);
где Sort1, Sort2 и Sort3 публикуют значения полей формы, но я знаю, что это не работает.Как я могу это реализовать?Я использую ASP.Net MVC 3 в C #, а LINQ использует Entity Framework (EDM).