Как отфильтровать таблицу данных на основе ключей словаря? - PullRequest
0 голосов
/ 24 сентября 2018

Я пытаюсь отфильтровать DataTable на основе ключей Dictionary, используя ниже Linq ..

dtCartItems = dtCartItems.AsEnumerable()
                                .Where(c => _DicItemsInCart.All(kv => c.Field<string>("Circuit_Id") == kv.Key.ToString()))
                                .CopyToDataTable();

Этот запрос Linq работает правильно, если Dictionay содержит только одну запись (дляодна key,value пара записей), но она показывает исключение (The source contains no DataRows.), когда Dictionary имеет более одной строки.

Какие изменения необходимо выполнить в приведенном выше запросе Linq, чтобы получить ожидаемый отфильтрованный DatatTable?

1 Ответ

0 голосов
/ 24 сентября 2018

All() возвращает только значение true, если предоставленная функция имеет значение true для каждого элемента в коллекции.В вашем примере выбираются только элементы из dtCartItems, которые имеют Circuit_Id соответствующие все ключи в DicItemsCart.

Я думаю, что вы хотите соответствовать любому введите словарь.

dtCartItems = dtCartItems.AsEnumerable()
                         .Where(c =>
                             _DicItemsInCart.Any(kv =>
                                 c.Field<string>("Circuit_Id") == kv.Key.ToString()))
                         .CopyToDataTable();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...