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