LINQ 式を簡略化する (IDE0120)
プロパティ | 値 |
---|---|
ルール ID | IDE0120 |
タイトル | LINQ 式の簡略化 |
カテゴリ | スタイル |
Subcategory | 不要なコード規則 (式レベルの基本設定) |
該当言語 | 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"));
警告を抑制する
単一の違反だけを抑制する場合は、ソース ファイルにプリプロセッサ ディレクティブを追加して無効にしてから、規則を再度有効にします。
#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