2016-11-11 1 views
0

열거 형에서 열거 형의 하위 집합을 가져 와서 나중에 사전 값에 따라 임의의 열거 형 요소를 선택하려고합니다. 나는이 일을 시도 :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를 , 버전 = 0.0.0.0, 문화 = 중립, PublicKeyToken = null]]}. 나는 아주 바보 같은 짓을하고있을거야.

+0

달성하고자하는 작업을 얻으려면 컬렉션을 원할 경우 .ToArray() 또는 ToList()를 사용하여 쿼리 결과를 투영해야합니다. Where 및 다른 linq 확장은 시퀀스를 반환합니다. 지연된 실행을 조사해야합니다. – reckface

+0

사전에 각 열거 형의 가중치가 있습니까? –

+0

@reckface thanks .ToList()는 .FindAll (...)과 함께 작업을 수행했습니다. 좀 더 자세히 살펴 봐야 할 것 같아. 어디서, 나는 그것이 마치 같다고 생각했다. 좋아. – Maritn

답변

0

사용할 것

var availableEnums = SomeClass.SomeDictionary 
         .Where(entry => entry.Value < someThreshold) 
         .ToList(); 
// or 
var availableEnums = SomeClass.SomeDictionary 
         .Where(entry => entry.Value < someThreshold) 
         .ToArray() 

findall은은으로 LINQ 확장 및 프로젝트 결과 직전, 어디 지연되는 반면, 당신이있는 OrderBy 같은 여러 작업을 효율적을 체인 수있는, 가지고 등등 투사 예전 당신의 결과.