每个双人为linq

时间:2016-02-04 04:15:48

标签: c# asp.net .net linq c#-4.0

我非常擅长使用linq并且无法将以下双重foreach重写为linq查询

@Override
protected void onPostCreate(Bundle savedInstanceState) {
    super.onPostCreate(savedInstanceState);
    mDrawerToggle.syncState();
}

1 个答案:

答案 0 :(得分:5)

首先翻译内部循环:

foreach(var country in europe)
{ 
    countries.AddRange ( 
        from europeanCountry in unitedKingdom 
        where country.language = europeanCountry.language 
        select country.language);
}

然后翻译外部循环:

    countries.AddRange ( 
        from country in europe
        from europeanCountry in unitedKingdom 
        where country.language = europeanCountry.language 
        select country.language )

然后意识到你正在做一个过滤的交叉产品,这在逻辑上是一个连接:

countries.AddRange (
    from country in europe
    join europeanCountry in unitedKingdom 
    on country.language equals europeanCountry.language
    select country.language
)

现在,我注意到可能有更有效和合理的方法来构建此查询。 "是否有更好的方法来构建此查询?"不是你问的问题; "如何将循环转换为查询?"是你暗示的问题 - 我注意到实际上没有问过任何问题。

你一次一次循环。将每个循环正确翻译,然后转到下一个。