IQueryProvider.Execute 명령을 사용하여 재생 중이며 내 식 트리 프로젝트의 일부인 표현식을 전달 중입니다. 이 명령은 원래 표현식에 따라 OrderedEnumerable 또는 GroupedEnumerable 일 수있는 객체를 다시 제공합니다. GroupBy식이 GroupedEnumerable 개체를 만듭니다. 다음 코드는 GroupedEnumerable 객체를 생성합니다.이 객체는 내가 겪고있는 문제의 예를 보여줍니다.GroupedEnumerable을 캐스팅하는 방법은 무엇입니까?
List<int> numbers = new List<int> { 1, 7, 16, 23, 41, 66 };
object grouped = numbers.GroupBy(n => n % 2 == 0);
이 때 "분류"는 (GroupedEnumerable의) 객체 나는 나에게 그것을 "하는 GetEnumerator"를 호출 할 수 있도록 다른 유형으로 캐스팅 할 수 있습니다. 나는 또한 예를 들어 "foreach"명령과 함께 사용할 수있는 모든 것을 캐스팅 할 수 없습니다. "var"(아래 그림 참조)를 사용하도록 코드를 변경하면 grouped는 이제 OrderedEnumerable 유형입니다. 열거자를 가져 와서 foreach 명령에 사용할 수 있습니다.
List<int> numbers = new List<int> { 1, 7, 16, 23, 41, 66 };
var grouped = numbers.GroupBy(n => n % 2 == 0);
다시 내 식 트리 프로젝트로 돌아가서는 IQueryProvider.Execute 명령은 개체를 반환하지만 개체가 GroupedEnumerable 될 때 OrderedEnumerable에 개체를 캐스팅 할 수 있어야합니다. 내가 시도한 모든 캐스트는 "유형이 'System.Linq.GroupedEnumerable`3 유형의 객체를 ..... 형식으로 변환 할 수 없습니다"라는 오류를 표시합니다. 그 물건을 더 유용한 것으로 던지는 방법을 말해 줄 수있는 사람?
전송 시도 및 정확한 오류를 설명하십시오. –
성취하려는 것은 무엇입니까? 짝수 만 원하면 GroupBy()가 아닌 Where()를 사용해야합니다. – Qwertie
코드 예제는 GroupedEnumerable을 얻는 방법의 예입니다. 내 질문에서 볼 수있는 IQueryProvider.Execute 메서드를 사용하여 실제로 GroupedEnumerable 형식의 개체를 반환합니다. 내 문제는 이것을 주조하고 짝수와는 아무 관련이 없다. – Retrocoder