0

ifステートメントに従う代わりに、最短のlinqクエリが何であるかを知りたいです。

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 
}

拡張メソッドへの 1 回の呼び出しで十分な LINQ である場合。

ほとんどの C# 開発者にとって、このようなパターンは奇妙に思えるかもしれませんが (まったくそうです)、チェックしたい動的に作成されたエラーのリストに既に取り組んでいる場合は...

そうでなければ、固執するif.


実際には、このパターンが一般的に使用され、見栄えがよくなるPythonなど、ボイラープレートの少ない言語でうまく機能します。

if error in (Error1, Error2):
    # do something
于 2012-07-18T07:23:31.447 に答える