【发布时间】:2016-06-22 11:08:18
【问题描述】:
你能帮我理解为什么下面的代码在执行过程中会抛出异常吗?
IQueryable<TestDto> data = Enumerable.Range(1, 10000).Select(i => new TestDto()
{
Id = i,
Name = (i%1000).ToString()
}).AsQueryable();
var test = data.Provider.Execute<TestDto>(data.Expression);
对我来说很奇怪,当 QueryProvider 和 Expression 都取自同一个 IQueryable 实例时,查询提供程序无法执行表达式!
编辑:考虑到方法 Execute 的参数“表达式”,抛出的异常是 ArgumentException。
【问题讨论】:
-
您对
data.Expression的期望是什么?您遇到什么错误? -
在您的情况下,
data.Expression预计会返回多个TestDto对象,但您将TestDto作为TResult(单个项目)传递。尝试传递一个返回单个TestDto(其返回类型为TestDto)的表达式。 -
@YacoubMassad 非常感谢。就是这样:)
标签: c# linq-to-objects iqueryable