Yanıtlar:
array.Contains("str", StringComparer.OrdinalIgnoreCase);
Veya belirli koşullara bağlı olarak aşağıdakileri tercih edebilirsiniz:
array.Contains("str", StringComparer.CurrentCultureIgnoreCase);
array.Contains("str", StringComparer.InvariantCultureIgnoreCase);
InvariantCulture. Yukarıdaki üç seçenekten herhangi birinin kullanılması duruma bağlıdır. Yeniden düzenlemenize itiraz etmiyorum, ancak "büyük olasılıkla" yorumunu kaldırıyorum. Cevapta şimdiki durumda sizin için uygun olanı seçmeniz gerektiği açıkça belirtildi.
Benim tarafımdan bazı önemli notlar, ya da en azından bir yere dağıtılmış bazı bilgiler koymak - yukarıdaki gibi bir StringComparer ile ipucu:
if (array.Contains("str", StringComparer.OrdinalIgnoreCase))
{}
array.Contains() bir LINQ genişletme yöntemidir ve bu nedenle standart olarak yalnızca .NET 3.5 veya üstü ile çalışır ve aşağıdakileri gerektirir:
using System;
using System.Linq;
Ancak: .NET 2.0'da basit Contains()yöntem (büyük / küçük harf duyarsızlığı hesaba katılmadan) en azından şu şekilde mümkündür:
if ( ((IList<string>)mydotNet2Array).Contains(“str”) )
{}
Contains () yöntemi IList arabiriminin bir parçası olduğundan, bu yalnızca dizilerle değil listelerle de çalışır.
Büyük / küçük harf duyarsızlığını dikkate alan özel bir IEqualityComparer uygulayın .
Ayrıca, kontrol bu dışarı. Öyleyse (teoride) tek yapmanız gereken:
myArray.Contains("abc", ProjectionEqualityComparer<string>.Create(a => a.ToLower()))
new[] { "ABC" }.Select(e => e.ToLower()).Contains("abc") // returns true
CurrentCulture) istemediğiniz neredeyse tüm durumlarda ,Ordinalyerine kullanmak zorundasınızInvariantCulture.