0

我想知道什么可能是最短的 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
}   
4

2 回答 2

1

Linq 会使这段代码变得复杂,你提供的代码比 Linq 更易读、更快速、更易于维护

于 2012-07-18T06:50:32.860 回答
0

你可以使用

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
于 2012-07-18T07:23:31.447 回答