检查条件并使用c#中的lambda表达式用两个列表赋值



我有一段代码:

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

其中状态详细信息和状态是列表。

有人能帮我在linq lambda表达式中转换这个吗。我尝试了所有可能的方法,但每次都被卡住了。

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

但是,如果状态中有更多匹配元素,则结果并不完全相同。但是我假设您想要第一个匹配的元素,否则您需要使用LastOrDefault((而不是FirstOrDefault(

最新更新