我正在寻找C#(2)中的通用双向1到1字典类,即.a BiDictionaryOneToOne<T, S>保证只包含每个值和键中的一个(无论如何最多为RefEquals),并且可以使用键或值进行搜索.有人知道,或者我应该自己实施吗?我不敢相信我是第一个需要这个的人......
在这个问题的答案中有一个BiDictionary ,但它不适用于唯一元素(并且也不实现RemoveByFirst(T t)或RemoveBySecond(S s)).
谢谢!
基本上我想要像Dictionary <Tkey1,TKey2,TValue>这样的东西,但不是(正如我在其他问题中看到过的那样)和AND中的键,但是在OR中.为了更好地解释:我希望能够在字典中找到只提供其中一个键的元素,而不是两者.
我还认为我们应该考虑线程安全性以及轻松扩展到Dictionary <Tkey1,TKey2,TKeyN,TValue>解决方案的能力......
互联网上有几个地方谈论有多键密钥字典,如:
要么
我正在寻找一个多键字典,只要我只提供一个键,就可以检索我正在寻找的对象.换句话说,如果我在哪里:
// multyKeyDictionary = instance of a multikeydictionary
multyKeyDictionary.add(key1, key2, someObject);
Run Code Online (Sandbox Code Playgroud)
那么我希望能够将someObject作为:
multyKeyDictionary[key1]; 要么 multyKeyDictionary[key2];
我对词典有疑问,希望你能帮助我.
我有以下声明:
class MainCollection<TKey1, TKey2, TValue> : Dictionary<KeyValuePair<TKey1, TKey2>, TValue>
Run Code Online (Sandbox Code Playgroud)
问题是我无法通过TKey1 或 TKey2 从这本词典中获取一个元素.有没有办法只通过TKey1或TKey2获得一个元素,而不是TKey1和TKey2?
我写了以下代码:
public TValue GetItemByKey1(TKey1 key)
{
MainCollection<int, int, string> Coll = new MainCollection<int, int, string>();
var value = from s in Coll where s.Key.Key == key select s.Value;
}
Run Code Online (Sandbox Code Playgroud)
但它已经有两个问题:
我该如何解决这些错误?我在这里找不到任何相关的问题.提前致谢!