2

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

1 回答 1

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 groupsList<Group> groups,则该代码甚至不会编译,因此您会立即知道您没有实际评估该属性(它会返回 an IQueryable<Group>)。

于 2012-10-26T22:39:41.537 回答