Мне нужен регистр, не учитывающий регистр, или заданный тип коллекции (строк). Какой самый простой способ создать его? Вы можете указать тип сравнения, которое вы хотите получить на клавишах Словаря, но я не могу найти ничего похожего на список.Нечувствительный к регистру список
ответ
Похоже, его можно использовать класс KeyedCollection:
public class Set<T> : KeyedCollection<T,T>
{
public Set()
{}
public Set(IEqualityComparer<T> comparer) : base(comparer)
{}
public Set(IEnumerable<T> collection)
{
foreach (T elem in collection)
{
Add(elem);
}
}
protected override T GetKeyForItem(T item)
{
return item;
}
}
Предполагая, что вы используете .NET 3.5, вы можете просто использовать:
var strings = new HashSet<string>(StringComparer.InvariantCultureIgnoreCase);
... или что-то подобное, где вы бы выбрать настройку, а также соответствующей культуры.
Список не имеет понятия сравнения по большей части - только при вызове IndexOf
и связанных с ним методах. Я не верю, что есть какой-то способ указать сравнение для этого. Однако вы можете использовать List<T>.Find
с предикатом.
Аналогичная история здесь, где хотите проверить contains
например
public static bool Contains(this string source, string toCheck, StringComparison comp)
{
return source.IndexOf(toCheck, comp) >= 0;
}
Использование Linq, это добавляет новый метод .Compare
using System.Linq;
using System.Collections.Generic;
List<string> MyList = new List<string>();
MyList.Add(...)
if (MyList.Contains(TestString, StringComparer.CurrentCultureIgnoreCase)) {
//found
}
Вам не нужно использовать Linq для использования метода Contains –
@ geo1701: но вам ** нужно ** 'using System.Linq', чтобы получить новую перегрузку с помощью' StringComparer'! –
Спасибо, хороший ответ, я надеялся, что есть расширение, вместо того, чтобы писать мои собственные. В противном случае я бы не знал, где искать! – Abacus
var Addresses = Pr.Where(a = >a.Key.ToUpper() == "KEY VALUE").ToList();
Просто сделайте ключи в верхнем регистре и поиск ВЕРСИЛЬНОЕ ЗНАЧЕНИЕ
Это ТОЧНО, что я хотел избежать. – Grzenio
- 1. Нечувствительный к регистру список OptionParser
- 2. нечувствительный к регистру Pos
- 3. Нечувствительный к регистру pandas.concat
- 4. Нечувствительный к регистру словарь
- 5. Нечувствительный к регистру заменитель
- 6. регистр, нечувствительный к регистру
- 7. Линк нечувствительный к регистру
- 8. Нечувствительный к регистру поиск
- 9. Нечувствительный к регистру Jaxb2Marshaller
- 10. регистр, чувствительный к регистру, нечувствительный к регистру
- 11. Нечувствительный к регистру Mongodb C#
- 12. нечувствительный к регистру поиск - xpath
- 13. Solr Нечувствительный к регистру запрос
- 14. Datomic: нечувствительный к регистру запрос
- 15. XmlSerializer -> нечувствительный к регистру
- 16. Yii Rights - нечувствительный к регистру
- 17. SQL2: регистр, нечувствительный к регистру
- 18. Iterm2 нечувствительный к регистру автозаполнение
- 19. MySQL - нечувствительный к регистру поиск
- 20. Is `history.go` нечувствительный к регистру
- 21. нечувствительный к регистру в searchlogic
- 22. Нечувствительный к регистру. Для делегатов?
- 23. Нечувствительный к регистру pandas dataframe.merge
- 24. LINQ Содержит нечувствительный к регистру
- 25. Нечувствительный к регистру mysql replace
- 26. Solr Suggestester - нечувствительный к регистру
- 27. XML-путь - нечувствительный к регистру
- 28. Нечувствительный к регистру строковый поиск словаря
- 29. Название ветки Git - чувствительный к регистру или нечувствительный к регистру?
- 30. регистр, нечувствительный к регистру в postgresql-запросе
Я застрял с .Net 2 sadly :( – Grzenio