Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在linq查询中迭代数组/列表_C#_Linq_Asp.net Core - Fatal编程技术网

C# 在linq查询中迭代数组/列表

C# 在linq查询中迭代数组/列表,c#,linq,asp.net-core,C#,Linq,Asp.net Core,我试图使用这个linq查询来检查某些对象的netID是否为null、空白或其他空 var badData = FileSignatures.Drive.Public.Where( e => String.IsNullOrWhiteSpace( e.NetworkBlock?.Select(n => n.netId)) && String.IsNullOrWhiteSpace( e.WiFiBlock?

我试图使用这个linq查询来检查某些对象的netID是否为null、空白或其他空

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查询中执行类似的操作

谢谢

当然

更改此项:

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();    
当然可以

更改此项:

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();    

e.NetworkBlock?.Any(n=>String.IsNullOrWhitespace(n.Id))
或类似性质的内容。这是一个枚举;您可以在lambda中使用它做任何其他地方可以做的事情。
e.NetworkBlock?.Any(n=>String.IsNullOrWhitespace(n.Id))
或类似性质的东西。这是一个枚举;你可以用它做任何事情,你可以在其他任何地方。谢谢!这看起来应该可以工作,但我得到了“无法从bool转换为字符串”。@SkyeBoniwell这不应该与我介绍的代码一起使用。仔细查看代码中的其他地方。哦,好吧,我知道'false'是一个布尔值,所以我想它可能一直在尝试将其转换为字符串。那是因为我忘了带括号!谢谢这看起来应该可以工作,但我得到了“无法从bool转换为字符串”。@SkyeBoniwell这不应该与我介绍的代码一起使用。仔细查看代码中的其他地方。哦,好吧,我知道'false'是一个布尔值,所以我想它可能一直在尝试将其转换为字符串。那是因为我忘了带括号!