C# 使用LINQ遍历对象树
一个国家有一个州的名单。一个州有一个城市列表。查找拥有邮政编码为11201的城市的州 我该怎么做 当我这样做的时候C# 使用LINQ遍历对象树,c#,linq,C#,Linq,一个国家有一个州的名单。一个州有一个城市列表。查找拥有邮政编码为11201的城市的州 我该怎么做 当我这样做的时候 Country.States.SelectMany( s => s.Cities.Where(c => c.Zip ==11201) ) .Select(s => s); 我得到的是城市而不是国家 Count
Country.States.SelectMany(
s => s.Cities.Where(c => c.Zip ==11201)
)
.Select(s => s);
我得到的是城市而不是国家
Country.States.Where(s => s.Cities.Any(c => c.Zip == 11201));
正如Benjamin Grunbaum所指出的,如果要检索一个状态(而不是列表),请将Where
替换为FirstOrDefault
Country.States.FirstOrDefault(s => s.Cities.Any(c => c.Zip == 11201));
就颜色而言,另一种方法是:
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();
+请注意,OP要求“the”state,您应该将Where替换为FirstFYI-两个示例中的右括号都丢失了。我更正了您对“States”的拼写;也许这就是问题的原因?许多城市都有不止一个邮政编码。你的模型是如何反映这一点的?此外,海军舰艇有邮政编码,但没有州;你在乎吗?