1

請看圖片:enter image description here實體框架LINQ加入多個列5桌(不可能?!)

我想創建一個LINQ查詢,結合在1至3個不同的列5頁不同的表。我基本上採取2臺的例子,重複到5

更新加入了表3部分:我如何才能以下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頁以上的表*和 2列或多列。

+10

哇!不相信有意義的列名? –

+0

不,這不是不可能的。 –

+0

你有這些連接的例子嗎?我似乎無法找到它們 - 我已經解決了使用視圖在SQL中編寫這些視圖然後將它們添加到EF的問題,但是它讓我困擾,linq無法實現這一點。幫幫我! :) – user2089039

回答

1

編寫這個查詢:

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; 

其實只是刪除括號。如果它仍然不起作用,視覺工作室會將其中一個join字標記爲錯誤。如果是這樣,這意味着您嘗試鏈接的列具有不同的數據類型。

假設VS標誌着第join字爲錯誤。因此,這意味着t1.KUNNRt2.KUNNR有不同的數據類型,或t1.RowIdt2.RowId有不同的數據類型。

檢查並更正數據類型,問題就會迎刃而解。

+0

保健佳品,其中,比如,T4從T1和T3領域加入一個例子嗎? – Matt