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