как получить отфильтрованный набор данных из Datatable с помощью LINQ - PullRequest
0 голосов
/ 04 июня 2018

У меня есть таблица данных, которая содержит данные о сотрудниках, эти данные привязаны к представлению таблицы.У меня есть выпадающие заголовки для страны, ранга, раздела в виде сетки.всякий раз, когда выбранный раскрывающийся индекс изменяется, я использую LINQ, чтобы получить данные в соответствии с раскрывающимся списком Страна, и сохранить их в Viewstate для дальнейших операций фильтрации.это отлично работает

Я сохраняю значения фильтра в словаре, скажем DictionaryFilters, если фильтр не установлен, значение ключа устанавливается на ВСЕ.

например, я выбираю страну и затем раздел.отфильтрованные данные в порядке.но если я установлю страну обратно на все, фильтр раздела все еще существует.Поскольку в моей сетке 4-5 раскрывающихся списков фильтрации, как можно запрашивать данные из таблицы данных, используя только один запрос LINQ и используя значения словаря, а не несколько условных запросов.есть ли% для выбора столбца, чтобы я изменил ВСЕ в словарном значении на этот конкретный оператор?

filter["Country"]="UK"; filter["Section"]="HR"; filter["rank"]="All";



 var query = from a in datatable
                        where a.Field<string>("Country")filter["Country"] &&
                              a.Field<string>("Section")==filter["Section"] &&
                              a.Field<string>("Rank")==filter["rank"] 
                        select a;

1 Ответ

0 голосов
/ 05 июня 2018

Вы пытались проверить, установлено ли значение фильтра «Все» перед фильтрацией?Это будет что-то вроде:

(filter["Country"] == "All") || (a.Field<string>("Country")filter["Country"])

Таким образом, когда для filter["Country"] установлено значение «Все», оператор or не оценивает второй оператор (он называется оператором короткого замыкания),

Надеюсь, это поможет!

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