[英]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.