只是想知道哪种方法使用起来更快更好,或者您更喜欢哪种方法
bool userHavePermission = user.Permissions.Any(x => x.UpperName == "ADMINISTRATOR");
或者
foreach (Permission p in _Permissions)
{
if (p.UpperName == name.ToUpper())
return true;
}
return false;
谢谢
只是想知道哪种方法使用起来更快更好,或者您更喜欢哪种方法
bool userHavePermission = user.Permissions.Any(x => x.UpperName == "ADMINISTRATOR");
或者
foreach (Permission p in _Permissions)
{
if (p.UpperName == name.ToUpper())
return true;
}
return false;
谢谢
它几乎是相同的代码,唯一的区别是,如果变量是因为您将在空实例上调用该方法,那么您将NullReferenceException
在运行时获得第二个代码片段。第一个看起来更短,更安全,更易读,这是我会使用的。并确保不会有任何 NRE:name
null
.ToUpper()
return user
.Permissions
.Any(x => string.Equals(x.UpperName, name, StringComparison.OrdinalIgnoreCase));
使用 Any 是更好的方法,因为它是一条线。它更容易阅读并且占用更少的空间。
此外,尚不清楚 Permissions 对象是什么,但如果它是表示数据库表的某种实体,那么 Any 肯定会更好,因为您只返回查询的结果,foreach 将在迭代开始之前解决整个 Permissions 列表.