Как проверить значение в списке словарей в vb.net? - PullRequest
0 голосов
/ 13 мая 2019

Какое выражение может возвращать логическое значение, если какой-либо словарь в списке содержит определенное значение?

Представьте себе это, но без необходимости ссылаться на каждый элемент в списке по отдельности:

(Dict_List(0).ContainsValue(value) or Dict_List(1).ContainsValue(value) or Dict_List(2).ContainsValue(value))=False

В идеале, если значение уже отсутствует в одном из словарей вместе с несколькими другими условиями; тогда код добавит еще один словарь. Я знаю, что foreach может сработать в этом случае, но одно выражение будет быстрее во время выполнения, и было бы неплохо знать это просто как лучшую практику.

1 Ответ

0 голосов
/ 13 мая 2019

На ум приходят две опции LINQ:

If Dict_List.SelectMany(Function(d) d.Values).Contains(value) Then

или

If Dict_List.Any(Function(d) d.ContainsValue(value)) Then

Первый параметр получает значения из каждого Dictionary и объединяет их все в один список, а затем проверяет этот список на соответствие. Второй вариант проверяет каждый Dictionary в отдельности и возвращает True, если какой-либо отдельный чек возвращает True. Будучи LINQ, они оба избегают бессмысленной проверки остальных значений, если найдено совпадение.

...