如何将多个表中的一列联接到一个列表中

本文关键字:一个 列表 一列 | 更新日期: 2023-09-27 18:09:02

我需要多个表中的名称列表。Table ATable BTable CTable D。表A、B和;C有一列"CompanyName",我需要把它和表D的列"ConsumerName"一起放在一个列表中。由于我只需要所有表中的一列不同值,是否可以在不使用联接的情况下将所有这些表添加在一起?这将用于与用户输入进行比较。感谢您的帮助:(

如何将多个表中的一列联接到一个列表中

我想你想要一个UNION而不是一个联接

SELECT CompanyName from A
UNION
SELECT CompanyName from B
UNION
SELECT CompanyName from C
UNION
SELECT ConsumerName from D

UNION的结果总是不同的,具有重复项的版本是UNION ALL

在评论中发布了一个建议,但我没有考虑到你的"Distinct"条件,这会使代码稍微长一点,所以我会发布一个答案。

需要引用System.Linq,我假设您已经存储了4个表的值。

List<string> values = new List<string>();
values.AddRange(tableA.Select(ta => ta.CompanyName).ToList());
var tableBVals = tableB.Where(tb => !values.Contains(tb.CompanyName)).ToList();
values.AddRange(tableBVals);
var tableCVals = tableC.Where(tc => !values.Contains(tc.CompanyName)).ToList();
values.AddRange(tableCVals);
var tableDVals = tableD.Where(td => !values.Contains(td.ConsumerName)).ToList();
values.AddRange(tableDVals);

我意识到它比你想要的更长、更混乱,但它会在紧要关头完成的。