2013-01-31 78 views
2

一個國家有一個狀態列表。一個州有一個城市列表。找到郵政編碼爲11201的城市。使用LINQ遍歷對象樹

我該怎麼做?

當我做

Country.States.SelectMany(
          s => s.Cities.Where(c => c.Zip ==11201) 
         ) 
          .Select(s => s); 

我得到的是城市而不是國家。

+1

我糾正了你的拼寫'國家';也許這就是導致這個問題的原因? – Brian

+0

許多城市都有不止一個郵政編碼。這些如何反映在你的模型中?另外,海軍艦隻有郵政編碼,但沒有州;你關心? –

回答

7
Country.States.Where(s => s.Cities.Any(c => c.Zip == 11201)); 

正如指出本傑明Gruenbaum,如果你想獲取一個狀態(不是列表),由FirstOrDefault

Country.States.FirstOrDefault(s => s.Cities.Any(c => c.Zip == 11201)); 
+1

+1只是注意到OP詢問「該」狀態,您應該替換Where with First –

+1

僅供參考 - 您錯過了兩個示例中的右括號。 –

6

只是顏色替換Where,另一種方法:

var foo = 
    from state in Country.States 
    from city in state.Cities 
    where city.Zip == 11201 // Hey, that's my zip code! 
    select state; 
var justTheOne = foo.FirstOrDefault();