使用LINQ遍历对象树

时间:2013-01-31 22:47:33

标签: c# linq

一个国家/地区有一份州名单。州有一个城市列表。找到一个城市的邮政编码为11201的州。

我该怎么做?

当我这样做时

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

我得到的是城市,而不是国家。

2 个答案:

答案 0 :(得分:7)

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

正如Benjamin Gruenbaum所指出的,如果您想要检索一个州(而不是列表),请将Where替换为FirstOrDefault

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

答案 1 :(得分:6)

仅仅为了颜色,另一种方法:

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();