簡化 LINQ 運算式 (IDE0120)
屬性 | 值 |
---|---|
規則識別碼 | 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>) ,並改為呼叫 、、 First()
、 FirstOrDefault()
、、 LastOrDefault()
Last()
、 Single
或 SingleOrDefault()
的多載 Count()
Any()
,以接受述詞函式來篩選項目,即可簡化這類運算式。
選項
此規則沒有相關聯的程式碼樣式選項。
範例
// 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
如需詳細資訊,請參閱如何隱藏程式碼分析警告。