在这里,我有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
};
答案 0 :(得分:0)
检入您的模型和数据库中的类型:
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() }