我正在尝试使用 C# linq 将两个表连接到实体。
一张桌子有客户,另一张桌子有许可证。这些表由 Client_ID 和 ClientLicence_ClientID 连接。由于某种原因(它们不是我的表),Client_ID 是一个 int,而 ClientLicence_ClientID 是一个字符串。
我的代码是:
var licences = (from client in entities.Clients
join licence in entities.ClientLicences
on new { clientId = SqlFunctions.StringConvert((double)client.Client_ID) } equals
new { licence.ClientLicence_ClientID }
into clientGroup
where (filter.clientId == 0 || client.Client_ID == filter.clientId)
select licence);
当我尝试编译它时,我得到一个错误:join 子句中的表达式之一不正确。调用“GroupJoin”时类型推断失败。
如果我注释掉 where 语句,那么它就可以工作(尽管没有过滤结果)。
过滤器变量是一个传递给函数的类。它只有一个属性:int clientId。