LINQ 式を簡略化する (IDE0120)

プロパティ
ルール ID IDE0120
タイトル LINQ 式の簡略化
カテゴリ スタイル
Subcategory 不要なコード規則 (式レベルの基本設定)
該当言語 C# および Visual Basic

概要

この規則は、過度に複雑な LINQ 式、特に Enumerable.Where<TSource>(IEnumerable<TSource>, Func<TSource,Int32,Boolean>) を呼び出した後に次のいずれかのメソッドが続く式にフラグを設定します。

このような式は、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"));

警告を抑制する

単一の違反だけを抑制する場合は、ソース ファイルにプリプロセッサ ディレクティブを追加して無効にしてから、規則を再度有効にします。

#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

詳細については、「コード分析の警告を抑制する方法」を参照してください。

関連項目