首页 > 解决方案 > 使用 linq 将一个列表的值与另一个列表的值相关联

问题描述

我有两个列表,一个包含有关客户的一些信息,另一个表包含有关客户财务状况的更多信息(一对一关系)。

客户表:

财务表:

我的目标是将每个薪水链接到客户列表(并非所有客户在财务表中都有相关记录)。我收到的所有客户和财务都是这样的:

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   |     +----+------------+--------+
+----+-----------+---------+

注意:我正在映射CustomerCustomerDTO具有 field 的 a Salary。该字段应填写财务表中的字段。我不能改变我的桌子的设计,桌子设计背后有一个原因,由于简单,我不打算谈论它。我只是对是否可以使用 linq 进行这种操作感兴趣。

标签: c#sqllinq

解决方案


除了马特解释的方式之外,另一种方式是这样的:

finances.ToList().ForEach(x => customerDTOs.Where(y => y.Id == x.CustomerId).First().Salary = x.Salary);

推荐阅读