无法从用法中推断出方法GroupJoin的类型参数

时间:2014-10-21 08:19:16

标签: c# linq entity-framework

我是使用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);

感谢您对此错误的任何帮助

1 个答案:

答案 0 :(得分:5)

Thomas Levesque's comment所示,用于加入集合的密钥必须属于同一类型。因此,在您的情况下,user.Idmeeting.Guid的类型不同(分别为intGuid)。您还没有提供有关这些对象结构的信息,因此我无法告诉您如何更新代码。

DotNotPerlsGroupJoin的工作方式有一个很好的基本概述,并描述了这些论点:

  

参数1和2:

     

参数一是二级集合。和   参数2是Func,它从第一个对象返回键   类型。

     

参数3和4:

     

Func返回第二个对象的密钥   type,以及将分组对象与组本身一起存储的类型。