2

请看图片:在此处输入图像描述

我正在尝试创建一个 LINQ 查询,该查询在 1 到 3 个不同的列上组合 5 个不同的表。我基本上以 2 个表为例,并重复表 3 到 5 的连接部分。

更新:如何使以下 LINQ 查询正常工作??????

    var match = (from t1 in context.cKNA1
                 join t2 in context.cKNB1 on 
                        new { t1.KUNNR, t1.RowId } equals 
                        new { t2.KUNNR, t2.RowId }
                 join t3 in context.cKNVV on 
                        new { t2.KUNNR, t2.RowId } equals 
                        new { t3.KUNNR, t3.RowId }
                 join t4 in context.cKNVH on 
                        new { t3.KUNNR, t3.RowId } equals 
                        new { t4.KUNNR, t4.RowId }
        SELECT ....columns here....)

我在网上找不到任何超过 3 个表*AND 2 个或更多列的东西。

4

1 回答 1

3

编写此查询:

 var match = from t1 in context.cKNA1
             join t2 in context.cKNB1 on 
                    new { t1.KUNNR, t1.RowId } equals 
                    new { t2.KUNNR, t2.RowId }
             join t3 in context.cKNVV on 
                    new { t2.KUNNR, t2.RowId } equals 
                    new { t3.KUNNR, t3.RowId }
             join t4 in context.cKNVH on 
                    new { t3.KUNNR, t3.RowId } equals 
                    new { t4.KUNNR, t4.RowId }
    SELECT t1.KUNNR;

其实只要去掉括号就行了。如果它仍然不起作用,Visual Studio 会将其中一个join单词标记为错误。如果是这样,则意味着您尝试链接的列具有不同的数据类型。

假设 VS 将第一个join单词标记为错误。所以,这意味着t1.KUNNRt2.KUNNR有不同的数据类型,或者t1.RowIdt2.RowId有不同的数据类型。

检查并更正您的数据类型,问题就会消失。

于 2013-07-19T09:23:42.713 回答