【发布时间】:2014-12-13 21:46:29
【问题描述】:
我有一个字典,其中键是枚举值列表,值是一个简单的字符串。
我需要做的是使用另一个枚举值列表找到匹配的 KVP。
如果我的测试或搜索列表中的列表包含字典中任何键中的所有项目(或枚举对象),我也需要它来返回 KVP。
示例代码摘录:
public enum fruit{ apple , orange , banana , grapes };
public class MyClass
{
public Dictionary<List<fruit>, string> FruitBaskets = new Dictionary<List<fruit>, string>;
FruitBaskets.Add(new List<fruit>{apple,orange},"Basket 1");
List<fruit> SearchList = new List<fruit>{orange,apple,grapes};
}
我需要在字典中搜索SearchList 并返回“Basket 1”。
请注意,对于此类示例,匹配可能比您期望的要向后匹配,因为我需要键来匹配搜索列表,反之亦然,因此搜索列表中不在键中的额外项目是可以的.
我知道我可以简单地迭代字典并一一检查,但我还需要它尽可能快,因为它驻留在运行相当快的循环中。
我目前使用的是;
public Dictionary<List<fruit>, string> SearchResults;
foreach (KeyValuePair<List<fruit>, string> FruitBasket in FruitBaskets)
{
if (FruitBasket.Key.Except(SearchList).Count() == 0)
SearchResults.Add(FruitBasket);
}
想知道是否有更好/更快的方法。
【问题讨论】:
标签: c# search dictionary enums