如何将foreach转换为linq查询或lambda表达式

时间:2016-11-09 17:45:53

标签: c# linq foreach

如何将此foreach转换为linq ??? MyReport.Elements由5个元素组成。

foreach( var i in MyReport.Elements)
{
      if(i.caption == table.caption)
       { 
         newName = i.uname;
       }
}

我已经厌倦了将其转换为linq,如下所示,但它没有成功。

newName = MyReport.Elements.ForEach(i => i.caption.Equals(table.caption)? i.uname : null );

1 个答案:

答案 0 :(得分:1)

只要有匹配项,您的示例将继续分配。因此,在您给出的上下文中唯一真正重要的是 last 完全匹配:

// C# 6
newName = MyReport.Elements.Where(x => x.caption == table.caption).LastOrDefault()?.uname;

Live / REPL示例就在这里:https://repl.it/ETVT/2