나는이 문제를 해결하기 위해 노력하고있는 실제 문제를 쉽게 소화 한 버전이기 때문에이 예제를 고안해 냈습니다. 다음은 클래스와 그 관계입니다.LINQ ToArray는이 예제에서 강력한 형식의 배열을 반환 할 수 있습니까?
먼저 문자열로 색인화 된 상태 개체 사전 (예 : 이름 또는 약어)이 포함 된 국가 클래스가 있습니다. 국가 클래스의 내용은 무관 :
class Country
{
Dictionary<string, State> states;
}
class State { ... }
우리는 또한 국가 이름 또는 약어 색인 0 개 이상의 BranchOffice 객체의 사전을 포함하는 회사의 클래스가 있습니다.
Country usa;
Company companies[];
는 내가 원하는 것은 분기를 포함하는 주 객체의 배열입니다 :
class Company
{
Dictionary<string, BranchOffice> branches;
}
class BranchOffice { ... }
우리가 작업하고있는 인스턴스는 하나의 국가 개체 및 회사 객체의 배열입니다. 내가 쓴 LINQ는 아래와 같습니다. 먼저 실제로 분기가 포함 된 모든 회사를 점유 한 다음 두 목록의 키를 비교하여 상태 목록에 가입합니다.
ToArray
은 익명 형식을 반환합니다. 익명 형식을 강력한 형식으로 변환 할 수없는 이유를 알고 있습니다. 강력하게 형식화 된 배열을 얻기 위해 뭔가를 바꿀 수 있는지 판단하려고합니다. (전체적으로 LINQ를 작성하는 더 좋은 방법에 대한 제안이 열려 있습니다.)
모든 곳에서 BranchOffice로 캐스팅을 시도했습니다 (앞쪽에, 앞쪽에, list2에, 마지막으로 선택 될 때, 그리고 덜 가능성 있음). 후보자).
BranchOffice[] offices =
(from cm in companies
where cm.branches.Count > 0
select new {
list2 =
(from br in cm.branches
join st in usa.states on br.Key equals st.Key
select st.Value
)
}
).ToArray();
'BranchOffice' 클래스는 어떻게 생겼습니까? – BrokenGlass