带有自定义检索密钥的.NET字典?

时间:2013-09-29 08:34:47

标签: c# collections dictionary hashtable key-value

我需要一个字典,从值Name的属性中检索密钥。例如,密钥不是字典本身的一部分,它是存储值的一部分。但是需要使用[] - 索引运算符访问这些项目。

我手动创建了一些类来执行此操作,我的问题是,是否还没有提供此功能的.NET类,因为我无法相信之前没有人需要此类。

我手动创建了以下内容来解决此请求:

实施NameTable的班级IEnumerable<T>, IList, IList<T> where T : INameItem。在内部,这个类使用简单的List<T>来保存值。

接口INameItem然后只提供了一个名称为Name的字符串属性。

现在我在类中创建了一个[] - indexer运算符来遍历内部List<T>中的所有项(我知道有一些更好的LINQ方法可以用更少的代码来完成这个,但是我更喜欢LINQ上的自定义迭代,因为我老了):

public T this[string name]
{
    get
    {
        foreach (T content in _items)
        {
            if (content.Name == name)
            {
                return content;
            }
        }
        return null;
    }
    set
    {
        for (int i = 0; i < _items.Count; i++)
        {
            T content = _items[i];
            if (content.Name == name)
            {
                _items[i] = value;
                break;
            }
        }
    }
}

0 个答案:

没有答案