【问题标题】:The type arguments cannot be inferred from the query无法从查询中推断出类型参数
【发布时间】:2012-10-26 21:27:19
【问题描述】:

我的 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  
                                       });

【问题讨论】:

  • 对不起,在标题里,忘记放在帖子里了。

标签: linq linq-to-entities


【解决方案1】:

看起来可能是因为您实际上并未评估 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> )。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-05-09
    • 1970-01-01
    • 1970-01-01
    • 2016-11-15
    相关资源
    最近更新 更多