C#字典:每个值多个KEYS

use*_*486 7 .net c# map

我正在寻找一种方法来获得单个值的多个.是的,我已经使用了搜索功能,但大多数答案都是相反的方向(每个键有多个),但我想要相反.

这背后的原因是我想为每个"主"ID保留多个Item-ID(它是Bot),并且将这些多个ID扔到一个值中太慢而无法修改(寻找一个值=>循环槽所有主要ID和获取每个值,然后检查该ID是否存在).

Key 1 => Value
Key 2 => Value
Key 3 => Value
Key 4 => Value
Key 5 => Value 2
Run Code Online (Sandbox Code Playgroud)

寻找价值应该返回:关键1-4,而不是5

所以我正在寻找一种更容易的方法 - 就像我上面所说的那样.

任何人都知道这是否可行以及如何做到这一点?提前致谢.

And*_*nce 7

编辑: 看看你的编辑,看起来你看起来已经Dictionary向后设计了......你的键应该是匹配值,而不是匹配键的值.

你可以做一些事情,比如创建一个将外键映射到内键的字典,然后使用内键来索引第二个字典.

例:

var outer = new Dictionary<int, Guid> {
  { 1, GuidA },
  { 2, GuidA },
  { 3, GuidA },
  { 4, GuidA },
  { 5, GuidB }
};
var inner = new Dictionary<Guid, Value> {
  { GuidA, Value1 },
  { GuidB, Value2 }
};
Run Code Online (Sandbox Code Playgroud)

你会访问它:value = outer[inner[key]].


Dwe*_*rly 5

你可能想太多了你的问题。键必须是唯一的才能对查找操作有用。值不需要是唯一的。多个键可以指向相同的值而不会引起问题。


Mat*_*rla 3

以相反的方式执行字典并使值成为项目列表。

例如,如果Value是字符串并且Key 1-4是整数,则您的字典可能类似于:

var theDictionary = new Dictionary<string, List<int>>();
Run Code Online (Sandbox Code Playgroud)

然后检索ValuebytheDictionary["Value"]将返回包含 1、2、3 和 4 的整数列表。

编辑 - 添加示例:

var theDictionary = new Dictionary<string, List<string>>
    {
        {"Value", new List<string> {"Key 1", "Key 2", "Key 3", "Key 4", "Key 5",}},
        {"Value2", new List<string> {"Key 5", "Key 2"}}
    };

var oneToFour = theDictionary["Value"];
Run Code Online (Sandbox Code Playgroud)

  • 反过来怎么样...给一个“key”得到“value” (4认同)