C# 在linq查询中迭代数组/列表
我试图使用这个linq查询来检查某些对象的netID是否为null、空白或其他空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?
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'是一个布尔值,所以我想它可能一直在尝试将其转换为字符串。那是因为我忘了带括号!