Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/339.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# 在lambda中组合if条件_C#_Lambda - Fatal编程技术网

C# 在lambda中组合if条件

C# 在lambda中组合if条件,c#,lambda,C#,Lambda,我有以下代码: if (ListOfMyModel.Any(a => a.SomeID != 0 && IsAuthorizedOnID(TheUserID, a.SomeID) == false) == false) { return true; } 基本上,我有一个对象列表,我将foreach循环替换为.Any(),我将向其传递lambda表达式 仅当a)SomeID不等于0的所有对象都在第二个函数中获得授权,但不必担心SomeID等于0的对象

我有以下代码:

if (ListOfMyModel.Any(a => a.SomeID != 0 && 
       IsAuthorizedOnID(TheUserID, a.SomeID) == false) == false)
{
    return true;
}
基本上,我有一个对象列表,我将
foreach
循环替换为
.Any()
,我将向其传递lambda表达式

仅当a)SomeID不等于0的所有对象都在第二个函数中获得授权,但不必担心SomeID等于0的对象的授权时,此代码才应返回true

我的表达是否正确,或者在某些情况下可能会失败


谢谢。

您不应该添加所有的否定,而应该使用与您在描述中所写完全相同的代码:

如果每个用户的ID为零或已授权


与添加所有否定相反,您应该在代码中完全按照您在描述中所写的内容编写:

如果每个用户的ID为零或已授权

尝试:

尝试:


使用
而不是
==false
还有,
!任何(x=>x)
都可以替换为
All(x=>!x)
(如果这样更容易处理的话)。SLak的建议是通用的,而不是特定于此代码。根本不要使用
==false
。也不要使用
==true
。使用
而不是
==false
还有,
!任何(x=>x)
都可以替换为
All(x=>!x)
(如果这样更容易处理的话)。SLak的建议是通用的,而不是特定于此代码。根本不要使用
==false
。也不要使用
==true
。@user2864740问题是,提出这条宽松裤时没有将demorgan的代码应用到OP的代码中,他只是根据给定的规范重写代码,这样代码读起来就像规范一样。@SLaks:BTW,是IsAuthorizedOnID(TheUserID,a.SomeID));与IsAuthorizedOnID相同(userId,a.SomeID)=true);==true条件是隐式的吗?@frenchie:如果
IsAuthorizedOnID()
返回
bool
,它已经是
true
false
true==true
仍然为true,
false==true
仍然为false。现在你明白了吗?请注意,如果它返回
bool?
,则是另一个故事;我知道在Javascript中,您可以隐式地省略它;我不知道C#。弗伦奇:这不是语言的问题;这是关于布尔值的意思
=
只是一个返回布尔值的操作符。@user2864740问题是,提出这条宽松裤并没有将demorgan的代码应用到OP的代码中,他只是根据给定的规范重写代码,这样代码读起来就像规范一样。@SLaks:BTW,是authorizedonid(TheUserID,a.SomeID));与IsAuthorizedOnID相同(userId,a.SomeID)=true);==true条件是隐式的吗?@frenchie:如果
IsAuthorizedOnID()
返回
bool
,它已经是
true
false
true==true
仍然为true,
false==true
仍然为false。现在你明白了吗?请注意,如果它返回
bool?
,则是另一个故事;我知道在Javascript中,您可以隐式地省略它;我不知道C#。弗伦奇:这不是语言的问题;这是关于布尔值的意思
=
只是一个返回bool的操作符。
return list.All(a => a.SomeId == 0 || IsAuthorizedOnID(TheUserID, a.SomeID));
if (!ListOfMyModel.Any(a => a.SomeID != 0 && !IsAuthorizedOnID(TheUserID, a.SomeID))
return ListOfMyModel.All(a => a.SomeId == 0 || IsAuthorizedOnID(TheUserID, a.SomeID));