我已經設計了這個例子,因爲它是我試圖解決的實際問題的一個容易消化的版本。這裏是類和他們的關係。LINQ ToArray在這個例子中能返回一個強類型的數組嗎?
首先,我們有一個Country類,它包含一個字符串索引的State對象字典(例如它們的名稱或縮寫)。 State類的內容是無關緊要的:
class Country
{
Dictionary<string, State> states;
}
class State { ... }
我們也有一個包含零個或多個BranchOffice對象也由國家名稱或縮寫收錄的詞典一類公司。
class Company
{
Dictionary<string, BranchOffice> branches;
}
class BranchOffice { ... }
我們正在使用的情況下,是一個國家目標和企業對象的數組:
Country usa;
Company companies[];
我要的是包含一個分支國家對象的數組。我寫的LINQ如下。首先它抓住所有實際包含分支的公司,然後通過比較兩個列表的關鍵字來加入狀態列表。
問題是ToArray
返回一個匿名類型。我明白爲什麼匿名類型不能轉換爲強類型。我試圖弄清楚我是否可以改變某些東西來取回強類型數組。 (並且我接受關於更好地寫LINQ的建議)
我已經試過在所有的地方都投射到分支辦公室(前面,在列表2,最後選擇,以及其他不太可能候選人)。
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