【问题标题】:How do I get one column from multiple tables to join into one list?如何从多个表中获取一列以加入一个列表?
【发布时间】:2016-09-27 04:11:34
【问题描述】:
我需要一个来自多个表的名称列表。 Table A、Table B、Table C、Table D。
表 A、B 和 C 有一列“CompanyName”,我需要将其与表 D 的列“ConsumerName”放在一个列表中。由于我只需要所有表中的一列不同值,是否可以在不使用连接的情况下将所有这些表添加在一起?这将用于与用户输入进行比较。任何帮助表示赞赏:)
【问题讨论】:
标签:
c#
sql
list
lambda
distinct
【解决方案1】:
我认为你想要一个 UNION 而不是一个 join
SELECT CompanyName from A
UNION
SELECT CompanyName from B
UNION
SELECT CompanyName from C
UNION
SELECT ConsumerName from D
UNION 的结果总是不同的,有重复的版本是 UNION ALL
【解决方案2】:
在 cmets 中发布了一个建议,但我没有考虑到您的“不同”条件,并且它使代码稍长,所以我会发布一个答案。
需要对 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);
我意识到它比你想要的更长更混乱,但它会在紧要关头。