一个国家有一份州名单.州有一个城市列表.找到拥有邮政编码11201的城市的州.
我该怎么做呢?
当我做
Country.States.SelectMany(
s => s.Cities.Where(c => c.Zip ==11201)
)
.Select(s => s);
Run Code Online (Sandbox Code Playgroud)
我得到的是城市而不是国家.
Country.States.Where(s => s.Cities.Any(c => c.Zip == 11201));
Run Code Online (Sandbox Code Playgroud)
正如Benjamin Gruenbaum所指出的,如果你想要检索一个状态(不是列表),请替换Where为FirstOrDefault
Country.States.FirstOrDefault(s => s.Cities.Any(c => c.Zip == 11201));
Run Code Online (Sandbox Code Playgroud)
仅仅为了颜色,另一种方法:
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)