我想知道什么是最短的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
}
答案 0 :(得分:1)
Linq会让这段代码变得复杂, 您提供的代码比Linq更具可读性,快速性和可维护性
答案 1 :(得分: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
}
如果对扩展程序method的单个调用足够LINQ。
我想对大多数C#开发人员来说这样的模式看起来很奇怪(而且完全是这样),但是如果你已经在研究一个动态创建的错误列表,你想要检查...
否则,坚持使用if.
它实际上在具有较少样板的语言中更好用,例如Python,这种模式常用,看起来好多了:
if error in (Error1, Error2):
# do something