如果条件在lambda内合并

时间:2013-12-23 18:35:22

标签: 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的对象的授权时,此代码才应返回true。

我的表情是正确的还是有可能失败的情况?

感谢。

2 个答案:

答案 0 :(得分:4)

不应该添加所有这些否定,而应该在代码中写下您在描述中写的内容:

  

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

return list.All(a => a.SomeId == 0 || IsAuthorizedOnID(TheUserID, a.SomeID));

答案 1 :(得分:0)

尝试:

if (!ListOfMyModel.Any(a => a.SomeID != 0 && !IsAuthorizedOnID(TheUserID, a.SomeID))

return ListOfMyModel.All(a => a.SomeId == 0 || IsAuthorizedOnID(TheUserID, a.SomeID));