LINQ 式を簡略化する (IDE0120)
財産 | 価値 |
---|---|
ルール ID | IDE0120 |
タイトル | LINQ 式を簡略化する |
カテゴリ | スタイル |
サブカテゴリー | 不要なコード規則(式レベルの好み) |
対象言語 | C# と Visual Basic |
概要
この規則は、過度に複雑な LINQ 式、特に Enumerable.Where<TSource>(IEnumerable<TSource>, Func<TSource,Int32,Boolean>) 呼び出す式にフラグを設定し、その後に次のいずれかのメソッドを指定します。
- Any<TSource>(IEnumerable<TSource>)
- Count<TSource>(IEnumerable<TSource>)
- First<TSource>(IEnumerable<TSource>)
- FirstOrDefault<TSource>(IEnumerable<TSource>)
- Last<TSource>(IEnumerable<TSource>)
- LastOrDefault<TSource>(IEnumerable<TSource>)
- Single<TSource>(IEnumerable<TSource>)
- SingleOrDefault<TSource>(IEnumerable<TSource>)
このような式は、Where<TSource>(IEnumerable<TSource>, Func<TSource,Int32,Boolean>) の呼び出しを削除し、代わりに Any()
、Count()
、First()
、FirstOrDefault()
、Last()
、LastOrDefault()
、Single
、または要素をフィルター処理する述語関数を受け入れる SingleOrDefault()
のオーバーロードを呼び出すことによって簡略化できます。
オプション
この規則には、関連付けられたコード スタイルのオプションはありません。
例
// Code with violations.
IEnumerable<string> words = new List<string> { "hello", "world", "!" };
var result = words.Where(x => x.Equals("hello")).Any();
// Fixed code.
IEnumerable<string> words = new List<string> { "hello", "world", "!" };
var result = words.Any(x => x.Equals("hello"));
警告を抑制する
1 つの違反のみを抑制する場合は、ソース ファイルにプリプロセッサ ディレクティブを追加して無効にしてから、ルールを再度有効にします。
#pragma warning disable IDE0120
// The code that's violating the rule is on this line.
#pragma warning restore IDE0120
ファイル、フォルダー、またはプロジェクトのルールを無効にするには、その重大度を 構成ファイルに none
に設定します。
[*.{cs,vb}]
dotnet_diagnostic.IDE0120.severity = none
すべてのコード スタイルルールを無効にするには、カテゴリ Style
の重大度を、構成ファイルに none
するように設定します。
[*.{cs,vb}]
dotnet_analyzer_diagnostic.category-Style.severity = none
詳細については、「コード分析の警告を抑制する方法」を参照してください。
関連項目
GitHub で Microsoft と共同作業する
このコンテンツのソースは GitHub にあります。そこで、issue や pull request を作成および確認することもできます。 詳細については、共同作成者ガイドを参照してください。
.NET