LINQ:帮助将foreach中的foreach转换为LINQ - 如果可能的话

时间:2011-03-20 08:16:14

标签: linq linq-to-sql foreach linq-to-objects where-clause

我有一个foreach在foreach内,我很乐意将它转换为LINQ。如果它只是1个foreach我可以使用Where但我很困惑..这是我的代码,任何帮助真的很感激。

基本上我需要找到发票,但这取决于2级的元数据。我认为代码是不言自明的。

currentMetaData >>> Is created outside of the foreach code 
its an object...but the code below works..

foreach (var item in this.invoices.Items)
{
  foreach (var metaData in item.MetaDatas)
  {
    if (metaData == currentMetaData)
    {
      name = item.Name;
      break;
    }
  }
}

我真的很想用LINQ缩短它。这可能吗?

1 个答案:

答案 0 :(得分:1)

这会提供所有名称

 var name = 
             from i in this.invoices
             from m in i.Metadata
             where m == currentMetadata
             select i.Name;

仅限第一个值来模拟现有循环中的break;语句。

 string name = 
             (from i in this.invoices
             from m in i.Metadata
             where m == currentMetadata
             select i.Name).First();