【问题标题】:How do you code a cross join in LINQ?如何在 LINQ 中编写交叉连接?
【发布时间】:2012-05-22 20:45:05
【问题描述】:

我的应用程序中有一个进程返回两个不同的对象列表。两个列表中的对象属于同一类型。我需要将两个列表交叉连接在一起以形成一个集成列表。如果是 SQL,它会是这样的:

SELECT A.KEY, A.DATA AS DATA1, B.DATA AS DATA2
FROM TABLE1 AS A
CROSS JOIN TABLE2

这是纯 LINQ,因为数据在实际的泛型 List 集合中返回。

此操作的 LINQ 语法是什么?

托尼

【问题讨论】:

  • 交叉连接?为什么那里有ON 子句?您最近是否从内部联接更改?
  • 经过更多研究,我发现我的语法不正确。看来我错了,我不需要交叉连接。也许这是我需要的外部连接。我需要返回两个表中的键相同的 1 行。
  • @TonyVitabile,即使您发现您确实需要另一种类型的连接,我可以建议您删除ON 子句吗?这将有助于未来的读者不会对您的问题和代码感到困惑。

标签: linq


【解决方案1】:
var res = from t1 in table1
          from t2 in table2
          select new
          {
              KEY = t1.KEY,
              DATA1 = t1.DATA,
              DATA2 = t2.DATA,
          };

【讨论】:

  • 你应该添加A.KEY = B.KEY的等价物。
  • 谢谢!这就是我所需要的。
猜你喜欢
  • 2014-03-08
  • 2013-04-12
  • 2017-01-26
  • 2014-07-29
  • 2012-04-04
  • 2013-05-24
  • 1970-01-01
  • 2014-03-17
  • 1970-01-01
相关资源
最近更新 更多