c# - 在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 表达式。我尝试了所有可能的方法,但每次都卡住了。
解决方案
statusDetails.ForEach(statusDetail => statusDetail.Name = statuses.FirstOrDefault(status => status.Id == statusDetail.Id)?.Name ?? statusDetail.Name);
但是如果status中有更多的匹配元素,结果就不完全一样了。但我假设你想要第一个匹配元素,否则你需要使用 LastOrDefault() 而不是 FirstOrDefault()
推荐阅读
- ubuntu-16.04 - Zabbix 从 4.0.21 升级到 5.2 mysqlversion 错误
- c# - 在字节中间设置 3 位 C#(按位运算符)
- javascript - 如何对所有列表(数组)项目进行操作?
- reactjs - React:如何填充保存在本地存储中的数据?
- javascript - 将 Lua toNumber 与 JS parseInt 进行比较 - 结果不匹配
- javascript - 在 Sharepoint 中的异步查询中委托函数
- c - “函数‘fizzbuzz’的参数太少”?
- windows - 来自 qt 框架安装程序的 Windows 安装程序无法在詹金斯管道中运行
- flutter - 列表中的一组收音机颤动
- c# - 返回 OData 中的派生类型