Это небольшое приложение, используемое в корпоративной сети максимум для 4 человек, и я новичок в C # и .NET, поэтому решение не должно быть грандиозным.
Я пытаюсь создать поле поиска для простого приложения .NET CRUD, в котором пользователь может выбрать категорию, по которой он хочет искать (например, «Имя приложения» или «Менеджер»), а затем текстовое поле, в котором он может фильтровать результаты на основе этого. Имя поля Элементы в выпадающем меню являются членами поля класса, и я хотел бы, чтобы все они были доступны для поиска. Я использую динамическую библиотеку Linq для создания строки, чтобы я мог передать имя столбца во время выполнения, но по некоторым причинам мои запросы не возвращают результатов.
Вот мой текущий запрос
dr_details = dr_details.Where("@0 == @1",searchType, searchString);
Так, например, searchType & searchString получают свои значения из строки запроса (скажем, «Менеджер» и «Джо» соответственно), поэтому запрос должен быть заменен следующим образом:
dr_details = dr_details.Where("Manager == Joe");
это не дает мне результатов. Однако, если я жестко закодирую строку "Manager == Joe"
в запросе, это нормально.
Какие-либо предложения? Эта проблема заставила бы меня выдернуть мои волосы, если бы они были достаточно длинными! :п
Вам не обязательно использовать динамический linq для этого, если вы не хотите.
Попробуйте что-то вроде этого:
var query = myList.AsQueryable();
switch(searchType)
{
case "Manger":
query = query.where(x=> x.Manager == searchString);
break;
case "....":
break;
default:
// No search type match in string... an exception? your call
break;
}
Я нахожу это более интуитивно понятным, поскольку он «строит» запрос по ходу дела ...
Редактировать:
Если это слишком больно, попробуйте следующий пост