【问题标题】:Trying to join AspNetUsers table in LINQ query results in Type inference failed in the call to 'Join'尝试在 LINQ 查询中加入 AspNetUsers 表导致类型推断在调用“加入”时失败
【发布时间】:2017-04-06 12:43:59
【问题描述】:

为什么我无法在 LINQ 查询中加入我的 AspNetUsers 表?

var query = (from O in _context.Organisations
                         join U in _context.Users on O.OrganisationId equals U.OrganisationId
                         where U.Id == userId
                         select new BudgetEntryVM
                         {
                             OrganisationId = O.OrganisationId,
                             OrganisationName = O.Name
                         }).ToList();

我在加入时遇到错误:

join 子句中的其中一个表达式的类型不正确。

“加入”调用中的类型推断失败。

我该怎么做呢?

【问题讨论】:

  • 这是运行时错误吗?
  • 你能加个mcve吗?
  • 不,这不在运行时。我添加了加入并立即给出了错误
  • 你能把两个表的OrganisationId的类型贴出来吗?
  • 在 AspNetUsers 表上是 nvarchar(max),在 Organizations 表上是 int :-/

标签: c# entity-framework linq


【解决方案1】:

错误

join 子句中的其中一个表达式的类型不正确。

调用“加入”时类型推断失败。

声明对于给定类型没有可接受的转换,在您的情况下:O.OrganisationIdU.OrganisationId

检查类型,您会发现它们不匹配。

【讨论】:

  • 谢谢斯特凡!当我从另一位开发人员那里接手时,我希望他能够使数据类型相同... :-/ 感谢您指出这一点!
【解决方案2】:

您是否尝试将 OrganisationId 都转换为字符串以进行连接?

【讨论】:

  • 转换为 int 时要小心,因为它可能包含一些字符 ;)
  • 一般情况下我会同意,但在这种情况下,它将始终是数字。谢谢:)
猜你喜欢
  • 1970-01-01
  • 2016-04-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-19
  • 2012-12-23
  • 1970-01-01
相关资源
最近更新 更多