无法从查询中推断出类型参数

时间:2012-10-26 21:27:20

标签: linq linq-to-entities

我的linq查询工作,我在linqpad中测试,得到了结果。当我尝试使用EntityVM ViewModel时,错误发生在最后一步。我真的不明白这个错误信息的含义。有人可以向我解释一下,并告诉我如何解决它。谢谢。

错误消息:“无法从查询中推断出类型参数”

        var entityVersions = EntityVersionRepository.Get().Where(x => x.Entity.ClientId == clientId);


        var groups = from ev in entityVersions
                     group ev by ev.EntityId
                         into g
                         select g.OrderByDescending(x => x.TaxYear).FirstOrDefault();

        var result = from g in groups
                     select (en => new EntityVM
                                       {
                                           Name = en.EntityName,
                                           Id = en.EntityId  
                                       });

1 个答案:

答案 0 :(得分:0)

看起来可能是因为您实际上并未评估groups查询(通过调用.ToList()或类似内容)。首先尝试评估groups

var groups = (from ev in entityVersions
                 group ev by ev.EntityId
                     into g
                     select g.OrderByDescending(x => x.TaxYear).FirstOrDefault())
             .ToList();

如果这是问题,那么它可能是您从查询返回具体类型时不应该使用var的一个主要示例。如果您将var groups更改为List<Group> groups,那么该代码甚至不会被编译,因此您可能已经知道您实际上没有对该属性进行评估(它将返回一个而是IQueryable<Group>