【发布时间】:2018-03-13 16:32:28
【问题描述】:
有人可以解释如何避免以下情况吗?
我有一个名为 data 的变量,它是 IQueryable<>。正如您在调用 Skip/Take 之前所见,运行时知道它的确切类型 (IQueryable<...Module>)。
在执行 Skip/Take 后,变量数据变为IQueryable< object>。
我希望它保留在执行 Skip/Take 之前的原始类型。在执行填充 data 变量的方法之前,我不知道 中的确切类型。后来我知道了,我可以得到我想使用的Type,以便将 Skip/Take 转换回原始类型。我怎样才能做到这一点?
PS1:集合已由返回IQueryable< object>的方法返回
PS2:在跳过/拍摄之前,它的行为类似于IQueryable< ...module>。
【问题讨论】:
-
您已经在这里回答了您自己的问题 - 这是因为您有一个
IQueryable<Object>集合开始。您在运行时看到它的实际类型的原因 - 这只是调试器的帮助。 -
Take 和 Skip 是一种通用方法,所以您尝试过 .Take
(...) 吗? -
@VidmantasBlazevicius 部分正确。如果 Skip/Take 没有执行,它的行为就像一个
一直到方法的末尾。 -
@SimplyGed 我事先不知道它是一个 Sales.Module。我知道只有在运行时,填充数据变量的方法才会执行。我想知道是否通过获取类型,我可以通过反射将 Skip/Take 转换为该类型。
-
@Midas 你这是什么意思?
标签: c# linq generics reflection