如何从多个表中获取一列以加入一个列表?

时间:2016-09-27 04:11:34

标签: c# sql list lambda distinct

我需要多个表中的名称列表。 Table ATable BTable CTable D。 表A,B& C有一列" CompanyName"我需要将其与表D' ConsumerName"一起放在一个列表中。因为我只需要来自所有表的一列不同值,是否可以在不使用连接的情况下将所有这些表添加到一起?这用于与用户输入进行比较。任何帮助表示赞赏:)

2 个答案:

答案 0 :(得分:1)

我认为你想要一个UNION而不是一个连接

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

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

答案 1 :(得分:0)

在评论中发表了一条建议,但我没有考虑到你的'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);

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