3

只是想知道哪种方法使用起来更快更好,或者您更喜欢哪种方法

bool userHavePermission = user.Permissions.Any(x => x.UpperName == "ADMINISTRATOR");

或者

foreach (Permission p in _Permissions)
{
    if (p.UpperName == name.ToUpper())
       return true;
}
return false;

谢谢

4

2 回答 2

5

它几乎是相同的代码,唯一的区别是,如果变量是因为您将在空实例上调用该方法,那么您将NullReferenceException在运行时获得第二个代码片段。第一个看起来更短,更安全,更易读,这是我会使用的。并确保不会有任何 NRE:namenull.ToUpper()

return user
    .Permissions
    .Any(x => string.Equals(x.UpperName, name, StringComparison.OrdinalIgnoreCase));
于 2013-02-15T22:10:35.253 回答
1

使用 Any 是更好的方法,因为它是一条线。它更容易阅读并且占用更少的空间。

此外,尚不清楚 Permissions 对象是什么,但如果它是表示数据库表的某种实体,那么 Any 肯定会更好,因为您只返回查询的结果,foreach 将在迭代开始之前解决整个 Permissions 列表.

于 2013-02-15T22:13:57.717 回答