首页 > 解决方案 > 在c#中使用lambda表达式检查条件并用两个列表赋值

问题描述

我有这段代码:

foreach(var statusDetail in statusDetails)
{
   foreach(var status in statuses)
   {
       if (statusDetail.Id == status.Id)
       {
          statusDetail.Name=status.Name;
       }
   }
}

其中 statusDetails 和 statuses 是列表。

有人可以帮我将其转换为 linq lambda 表达式。我尝试了所有可能的方法,但每次都卡住了。

标签: c#asp.net-core

解决方案


statusDetails.ForEach(statusDetail => statusDetail.Name = statuses.FirstOrDefault(status => status.Id == statusDetail.Id)?.Name ?? statusDetail.Name);

但是如果status中有更多的匹配元素,结果就不完全一样了。但我假设你想要第一个匹配元素,否则你需要使用 LastOrDefault() 而不是 FirstOrDefault()


推荐阅读