LINQ到SQL联接中的简单复合条件编译错误

本文关键字:复合 简单 条件 编译 错误 SQL LINQ | 更新日期: 2023-09-27 18:01:06

由于某种原因,我在以下linq-to-sql查询中遇到了一个看似简单的复合条件的编译错误:

using (var db = new CaremcDB(Database.Conn))
{
 var taxids = from p in db.ProviderTaxIds 
      join c in db.CustomerProviders
      on customerId equals c.CustomerId && p.Id equals c.ProviderId
      select p;
 return taxids.ToList<ProviderTaxIds>();
}

由于某种原因,它阻塞了"&&p.Id等于c.ProviderId"子句。

LINQ到SQL联接中的简单复合条件编译错误

customerId似乎是查询的外部输入。将其移到where子句中。

...
on p.Id equals c.ProviderId  
where customerId == c.CustomerId
select p;

试试这个,参数名称只需要在匿名对象中匹配

join c in db.CustomerProviders on new { customerId, p.Id } equals new { customerId = c.CustomerId, Id= c.ProviderId }