使用LINQ遍历对象树

dev*_*747 2 c# linq

一个国家有一份州名单.州有一个城市列表.找到拥有邮政编码11201的城市的州.

我该怎么做呢?

当我做

Country.States.SelectMany(
                           s => s.Cities.Where(c => c.Zip ==11201)
                         )
                          .Select(s => s);
Run Code Online (Sandbox Code Playgroud)

我得到的是城市而不是国家.

Rap*_*aus 7

Country.States.Where(s => s.Cities.Any(c => c.Zip == 11201));
Run Code Online (Sandbox Code Playgroud)

正如Benjamin Gruenbaum所指出的,如果你想要检索一个状态(不是列表),请替换WhereFirstOrDefault

Country.States.FirstOrDefault(s => s.Cities.Any(c => c.Zip == 11201));
Run Code Online (Sandbox Code Playgroud)


Jer*_*all 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();
Run Code Online (Sandbox Code Playgroud)