我有一个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缩短它。这可能吗?
答案 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();