簡體   English   中英

Linq Join 2表,列名稱不同,但兩個表中列的值相同

[英]Linq Join 2 tables, the column names are different but the values in the column are the same in both tables

在這里,我有2個表“ enrollcustomers”和“ enrollcustomersSS”。 我正在使用一個值dealCap來查詢表並獲取值,但是在這兩個表中,列名不同,如何連接它們,或者可能不需要連接它們,我所需要的只是選擇語句。 我收到一個錯誤:

“ join子句中的表達式之一的類型不正確。類型推斷在聯接調用中失敗”

我會很感激的。

int dealCap = 123;

DataClasses1DataContext db = new DataClasses1DataContext();

var a = from p in db.enrollcustomers
        join o in db.EnrollCustomerSSes on p.DealCapID equals o.AgreementNumber
        where p.DealCapID==dealCap && o.AgreementNumber==dealCap
        select new 
        {
            p.CustName,
            p.DBA,
            o.BillingLanguage
        };

在模型和數據庫中檢查以下類型:

enrollcustomer.DealCapID

EnrollCustomerSS.AgreementNumber

可能一個是string ,另一個是int 它們必須具有相同的類型。

習慣上,外鍵和主鍵具有相同的名稱(因此應為EnrollCustomerSS.DealCapID )。 但是在這里,FK和PK的不同名稱並不是導致該錯誤的原因。

正如我在評論中寫道:顯然不需要&& o.AgreementNumber==dealCap部分,您已經進行了內部連接,該內部連接從o中過濾了具有o.AgreementNumber == p.DealCapID

如果無法更改模型,則可以使用以下語句:

var a = from p in db.enrollcustomers
        join o in db.EnrollCustomerSSes on new { dealCap = (int)p.DealCapID } equals new { dealCap = int.Parse(o.AgreementNumber) } 
        where p.DealCapID == dealCap 
        select new
        {
            p.CustName,
            p.DBA,
            o.BillingLanguage
        };

或在聯接中將兩種類型都轉換為String。

join o in db.EnrollCustomerSSes on new { dealCap = p.DealCapID.ToString() } equals new { dealCap = o.AgreementNumber.ToString() } 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM