Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
| Mülk | Değer |
|---|---|
| kural kimliği | IDE0120 |
| Başlık | LINQ ifadesini basitleştirme |
| Kategori | Üslup |
| Alt Kategori | Gereksiz kod kuralları (ifade düzeyi tercihleri) |
| Geçerli diller | C# ve Visual Basic |
Genel bakış
Bu kural aşırı karmaşık LINQ ifadelerini, özellikle de Enumerable.Where<TSource>(IEnumerable<TSource>, Func<TSource,Int32,Boolean>) çağıran ifadeleri ve ardından aşağıdaki yöntemlerden birini işaretler:
- 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>)
Bu tür ifadeler, Where<TSource>(IEnumerable<TSource>, Func<TSource,Int32,Boolean>) çağrısı kaldırılarak ve bunun yerine öğeleri filtrelemek için koşul belirten bir işlevi kabul eden Any(), Count(), First(), FirstOrDefault(), Last(), LastOrDefault(), Singleveya SingleOrDefault() aşırı yüklemesi çağrılarak basitleştirilebilir.
Seçenekler
Bu kuralın ilişkili kod stili seçeneği yoktur.
Örnek
// 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"));
Uyarıyı gizleme
Yalnızca tek bir ihlali engellemek istiyorsanız, kuralı devre dışı bırakmak ve sonra yeniden etkinleştirmek için kaynak dosyanıza ön işlemci yönergeleri ekleyin.
#pragma warning disable IDE0120
// The code that's violating the rule is on this line.
#pragma warning restore IDE0120
Bir dosya, klasör veya projenin kuralını devre dışı bırakmak için önem derecesini yapılandırma dosyasında none olarak ayarlayın.
[*.{cs,vb}]
dotnet_diagnostic.IDE0120.severity = none
Tüm kod stili kurallarını devre dışı bırakmak için kategori Style önem derecesini yapılandırma dosyasında none olarak ayarlayın.
[*.{cs,vb}]
dotnet_analyzer_diagnostic.category-Style.severity = none
Daha fazla bilgi için bkz. Kod analizi uyarılarını gizleme.