如何将带条件的嵌套foreach循环转换为LINQ [英] How to convert nested foreach loops with conditions to LINQ

查看:176
本文介绍了如何将带条件的嵌套foreach循环转换为LINQ的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想问一下是否可以将下面的嵌套foreach循环转换为LINQ表达式.

I'd like to ask if it is possible to convert below nested foreach loops to LINQ expression.

public interface IFoo
{
  bool IsCorrect(IFoo foo);
  void DoSomething(IFoo foo);
}

List<IFoo> listA; //assume that contains items
List<IFoo> listB; //assume that contains items


foreach (var a in listA)
{
  foreach (var b in listB)
  {
    if (b.IsCorrect(a))
    {
      b.DoSomething(a);
    }
  }
}

推荐答案

这应该有效:

var result =
    from a in listA
    from b in listB
    where b.IsCorrect(a)
    select new {a, b};

foreach (var item in result)
    item.b.DoSomething(item.a);

这篇关于如何将带条件的嵌套foreach循环转换为LINQ的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆