0
我想从一个枚举中获取枚举子集,以便稍后根据Dictionary的值选择一个随机枚举元素。我试着这样做:关于枚举列表的LINQ查询
var allEnums = Enum.GetValues(typeof(MyEnum)).Cast<MyEnum>();
var availableEnums = allEnums.Where(e => SomeClass.SomeDictionary[e] < someThreshold);
//Note: SomeDictionary<MyEnum, int>
而且,这并不工作之一:
var availableEnums = SomeClass.SomeDictionary.Where(entry => entry.Value < someThreshold);
availableEnums的值总是{System.Linq.Enumerable + c__Iterator1D`1 [AircraftModel,汇编CSHARP ,Version = 0.0.0.0,Culture = neutral,PublicKeyToken = null]]}。我一定在做一些非常愚蠢的事情,但是我如何得到这个正确的?
如果我得到你想要达到的目标,如果你想要一个集合,你需要用.ToArray()或ToList()来计算你的查询结果。 Where和其他linq扩展返回一个序列。你需要考虑延期执行。 – reckface
字典中是否包含每个枚举的权重? –
@reckface谢谢,.ToList()和.FindAll(...)一起完成了这项工作。我想我需要仔细看看。在哪里,我认为它就像.FindAll一样。 – Maritn