【问题标题】:How do I get one column from multiple tables to join into one list?如何从多个表中获取一列以加入一个列表?
【发布时间】:2016-09-27 04:11:34
【问题描述】:

我需要一个来自多个表的名称列表。 Table ATable BTable CTable 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);
      

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-08-01
        • 1970-01-01
        • 2021-10-19
        • 1970-01-01
        • 1970-01-01
        • 2011-04-03
        • 2021-05-08
        • 1970-01-01
        相关资源
        最近更新 更多