c# - 使用 linq 将一个列表的值与另一个列表的值相关联
问题描述
我有两个列表,一个包含有关客户的一些信息,另一个表包含有关客户财务状况的更多信息(一对一关系)。
客户表:
- ID
- 姓名
- 地址
财务表:
- ID
- 客户ID
- 薪水
我的目标是将每个薪水链接到客户列表(并非所有客户在财务表中都有相关记录)。我收到的所有客户和财务都是这样的:
IEnumerable<Customer> customers= await _customerService.GetCustomers();
IEnumerable<CustomerDTO> customerDTOs = _mapper.Map<IEnumerable<Customer>, IEnumerable<CustomerDTO>>(kunden); // Map to CustomerDTO which contains a property for salary
IEnumerable<Finance> finances= await _financeService.GetFinances();
例子:
+----+-----------+---------+ +----+------------+--------+
| Id | Name | Address | | Id | CustomerId | Salary |
+----+-----------+---------+ +----+------------+--------+
| 1 | Microsoft | foo 1 | | 1 | 1 | 8,650$ |
| 2 | Apple | foo 2 | | 3 | 2 | 7,880$ |
| 3 | Testla | foo 3 | +----+------------+--------+
+----+-----------+---------+
注意:我正在映射Customer
到CustomerDTO
具有 field 的 a Salary
。该字段应填写财务表中的字段。我不能改变我的桌子的设计,桌子设计背后有一个原因,由于简单,我不打算谈论它。我只是对是否可以使用 linq 进行这种操作感兴趣。
解决方案
除了马特解释的方式之外,另一种方式是这样的:
finances.ToList().ForEach(x => customerDTOs.Where(y => y.Id == x.CustomerId).First().Salary = x.Salary);
推荐阅读
- html - 为什么 SVG 会在 Firefox 中为大 ViewBox 尺寸产生模糊图像
- java - 带有选择的 CriteriaBuilder 不允许没有构造函数
- php - 在父级和嵌套中添加嵌套的子级应等于数组中的元素数
- c++ - 可变字符数组在嵌套函数 C++ 中显示不正确
- java - 使用 Bazel 构建 WAR 文件
- ajax - 使用 ajax 从 Laravel 中的请求中获取价值
- python - Seaborn 热图将多个标签组合为 xticks
- javascript - 单个 if 条件的行为(省略 else 返回 false)
- javascript - PHP中的倒数计时器重新启动
- c# - 如何管理为身份服务器和 Web Api 提供良好的数据库基础架构?