我是使用Entity Framework的新手,我一直遇到这个问题,我的代码无法编译。我得到的错误信息是:
方法的类型参数 “System.Linq.Queryable.GroupJoin(System.Linq.IQueryable, System.Collections.Generic.IEnumerable, System.Linq.Expressions.Expression>中 System.Linq.Expressions.Expression>中 System.Linq.Expressions.Expression,TResult>&GT)” 无法从使用中推断出来。尝试指定类型参数 明确。
我做了一些搜索,发现了一些类似的问题,但没有任何帮助我解决我的问题。我只想尝试输出一些简单的东西用于调试目的,这是我目前的代码:
var result = _context.Set<User>()
.Where(user => user.GraphMeetingStatistics && user.Id == userId)
.GroupJoin(_context.Set<Meeting>()
.Where(meeting => meeting.UserId == userId),
user => user.Id,
meeting => meeting.Guid,
(user, meeting) => meeting);
感谢您对此错误的任何帮助
答案 0 :(得分:5)
如Thomas Levesque's comment所示,用于加入集合的密钥必须属于同一类型。因此,在您的情况下,user.Id
和meeting.Guid
的类型不同(分别为int
和Guid
)。您还没有提供有关这些对象结构的信息,因此我无法告诉您如何更新代码。
DotNotPerls对GroupJoin
的工作方式有一个很好的基本概述,并描述了这些论点:
参数1和2:
参数一是二级集合。和 参数2是
Func
,它从第一个对象返回键 类型。参数3和4:
从
Func
返回第二个对象的密钥 type,以及将分组对象与组本身一起存储的类型。