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
}
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
}
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
}
拡張メソッドへの 1 回の呼び出しで十分な LINQ である場合。
ほとんどの C# 開発者にとって、このようなパターンは奇妙に思えるかもしれませんが (まったくそうです)、チェックしたい動的に作成されたエラーのリストに既に取り組んでいる場合は...
そうでなければ、固執するif.
実際には、このパターンが一般的に使用され、見栄えがよくなるPythonなど、ボイラープレートの少ない言語でうまく機能します。
if error in (Error1, Error2):
# do something