Grz*_*nio 18 .net c# collections
我需要一个不区分大小写的列表或集合类型的集合(字符串).创建一个最简单的方法是什么?您可以指定要在Dictionary的键上获得的比较类型,但我找不到任何类似的List.
Jon*_*eet 31
假设您使用的是.NET 3.5,您可以使用:
var strings = new HashSet<string>(StringComparer.InvariantCultureIgnoreCase);
Run Code Online (Sandbox Code Playgroud)
...或类似的东西,你也可以选择适当的文化背景.
列表并不真正具有大部分比较的想法 - 仅在您调用IndexOf
和相关方法时.我不相信有任何方法可以指定用于此的比较.但是,您可以使用List<T>.Find
谓词.
Ces*_*ere 21
使用Linq,这为.Compare添加了一个新方法
using System.Linq;
using System.Collections.Generic;
List<string> MyList = new List<string>();
MyList.Add(...)
if (MyList.Contains(TestString, StringComparer.CurrentCultureIgnoreCase)) {
//found
}
Run Code Online (Sandbox Code Playgroud)
看起来可以利用 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;
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
9715 次 |
最近记录: |