San*_*mar -2 .net c# linq asp.net c#-4.0
我很高兴使用linq并且无法将以下双重foreach重写为linq查询
foreach(var country in europe)
{
foreach(var europianCountry in unitedKingdom)
{
if (country.language == europianCountry.language)
{
countries.add (country.language);
}
}
}
Run Code Online (Sandbox Code Playgroud)
首先翻译内循环:
foreach(var country in europe)
{
countries.AddRange (
from europeanCountry in unitedKingdom
where country.language = europeanCountry.language
select country.language);
}
Run Code Online (Sandbox Code Playgroud)
然后翻译外循环:
countries.AddRange (
from country in europe
from europeanCountry in unitedKingdom
where country.language = europeanCountry.language
select country.language )
Run Code Online (Sandbox Code Playgroud)
然后意识到你正在做一个过滤的交叉产品,这在逻辑上是一个连接:
countries.AddRange (
from country in europe
join europeanCountry in unitedKingdom
on country.language equals europeanCountry.language
select country.language
)
Run Code Online (Sandbox Code Playgroud)
现在,我注意到可能有更有效和合理的方法来构建此查询."有没有更好的方法来构建这个查询?" 不是你问的问题; "我如何将循环转换为查询?" 是你暗示的问题 - 我注意到实际上没有问过任何问题.
你一次做一个循环.将每个循环正确翻译,然后转到下一个循环.
| 归档时间: |
|
| 查看次数: |
195 次 |
| 最近记录: |