c# - 如何使用 linq 返回布尔值
问题描述
我有一个 foreach 循环,我在其中迭代一个列表以确保每个项目都是有效的并且想要返回一个布尔值。
这是我的 foreach 代码:
bool isValid = true;
foreach (var req in requestList)
{
if (!req.ChannelId.HasValue || !req.PayoutAmountInCents.HasValue)
{
isValid = false;
PayoutFDEvents.LogInvalidPayoutRequest(this.BuildPayoutFDDocument(req), "missing channelId or patronage amount");
}
}
这是我将其转换为 linq 语句的尝试:
var isValid = requestList
.Select(r =>
{
if (!r.ChannelId.HasValue || !r.PayoutAmountInCents.HasValue)
{
PayoutFDEvents.LogInvalidPayoutRequest(this.BuildPayoutFDDocument(r), "missing channelId or patronage amount");
return false;
}
return true;
});
但是,看起来我的实现返回了一个布尔列表。有没有办法可以返回一个整体的布尔值?
解决方案
这可以转换为一个简单的表达式,如下所示:
var isValid = requestList.All(r => r.ChannelId.HasValue && r.PayoutAmountInCents.HasValue)
我建议你不要在你的表情中间记录一些东西——这只是很臭,一旦你转换为使用就不会很好用All()
推荐阅读
- git - Git prune 没有删除我的本地分支
- javascript - 没有内联样式的画布网格不正确
- android - 成功社交登录后,我在自定义选项卡中获得“打开方式”选项
- angular - 错误 TS2322:类型 '() => string' 不可分配给类型 'string'
- sql - 具有不同粒度级别总和的嵌套 SQL 查询
- java - System.getenv 仍然在 MacOS Mojave 上获取已删除的 env 变量值 - Java
- reactjs - 错误:I18nextWithTranslation 在渲染时暂停,但未指定回退 UI
- java - JTextField 不接受超过 1 个输入
- python-3.x - tictactoe python(无限次打印棋盘)
- animation - Xamarin 表单 - 乐天动画