我想知道什么可能是最短的 linq 查询,而不是遵循 if 语句。
public enum ErrorMessage { Error1=1, Error2=2, Error3=3, Error4=4 }
ErrorMessage error = ErrorMessage.Error4;
if (error == ErrorMessage.Error1 || error == ErrorMessage.Error2)
{
//do something
}
我想知道什么可能是最短的 linq 查询,而不是遵循 if 语句。
public enum ErrorMessage { Error1=1, Error2=2, Error3=3, Error4=4 }
ErrorMessage error = ErrorMessage.Error4;
if (error == ErrorMessage.Error1 || error == ErrorMessage.Error2)
{
//do something
}
Linq 会使这段代码变得复杂,你提供的代码比 Linq 更易读、更快速、更易于维护
你可以使用
if (new [] {ErrorMessage.Error1, ErrorMessage.Error2}.Contains(error))
{
//do something
}
或者
var bad_errors = new [] {ErrorMessage.Error1, ErrorMessage.Error2};
if (bad_errors.Contains(error))
{
//do something
}
如果对扩展方法的一次调用对您来说就足够了 LINQ。
我想对于大多数 C# 开发人员来说,这样的模式似乎很奇怪(而且完全是这样),但是如果您已经在处理要检查的动态创建的错误列表...
否则,坚持if.
它实际上在样板较少的语言中工作得更好,例如 Python,这种模式很常用并且看起来更好:
if error in (Error1, Error2):
# do something