Перебор массива / списка внутри запроса linq - PullRequest
0 голосов
/ 07 октября 2019

Я пытаюсь использовать этот запрос linq, чтобы проверить, являются ли определенные идентификаторы объекта пустыми, пустыми или иным образом пустыми.

var badData = FileSignatures.Drive.Public.Where(
    e => String.IsNullOrWhiteSpace(
        e.NetworkBlock?.Select(n => n.netId)) &&
         String.IsNullOrWhiteSpace(
             e.WiFiBlock?.netId) &&
             String.IsNullOrWhiteSpace(
                 e.BluetoothBlock?.netId))
    .ToList();                  

WiFiBlock и BluetoothBlock - это просто отдельные объекты, поэтому вышеприведенное должно работать.

Однако NetworkBlock - это массив объектов, поэтому мне нужно выяснить, как перебирать каждый объект в NetworkBlock и проверять его netId.

Возможно ли сделать что-то подобное внутри linqзапрос?

Спасибо!

1 Ответ

2 голосов
/ 07 октября 2019

Конечно!

измените это:

String.IsNullOrWhiteSpace(
        e.NetworkBlock?.Select(n => n.netId))

на это:

e.NetworkBlock?.Any(n => String.IsNullOrWhiteSpace(n.netId)) ?? false // or true depending on criteria

или используйте All в зависимости от ваших критериев.

полный код:

var badData = FileSignatures.Drive.Public.Where(
    e => (e.NetworkBlock?.Any(n => String.IsNullOrWhiteSpace(n.netId)) ?? false) &&
         String.IsNullOrWhiteSpace(
             e.WiFiBlock?.netId) &&
             String.IsNullOrWhiteSpace(
                 e.BluetoothBlock?.netId))
    .ToList();    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...