有人可以解释如何避免以下情况吗?
我有一个名为数据的变量IQueryable<>
。正如您在调用Skip / Take之前所看到的那样,运行时知道它的确切类型(IQueryable<...Module>
)。
执行Skip / Take后,变量数据变为IQueryable< object>
。
我希望它在执行Skip / Take之前保留原始类型。我不知道&lt;&gt;里面的确切类型在执行填充数据变量的方法之前。之后我就知道了,我可以获得我想要使用的Type
以便将Skip / Take转换为原始类型。我怎样才能做到这一点?
PS1:该集合已由返回IQueryable< object>
PS2:直到跳过/取走它的行为就像IQueryable< ...module>
。
答案 0 :(得分:1)
在执行IQueryable<Object>
和Skip
之前,您的收藏集为Take
。您需要将您的收藏品投射到确切的类型。
答案 1 :(得分:1)
如果您的方法返回IQueryable<object>
,那就是所有代码都知道的。如果您确定类型,则可以使用OfType<Module>()
或Cast<Module>()
linq调用,以使其返回到您期望的类型,而不是代码所期望的类型。
编辑:在原帖上阅读你的评论后,几乎听起来你的函数返回IQueryable<object>
实际上应该变成一个返回IQueryable<T>
的泛型函数,这样你就赢了首先有这个问题。这很快就会成为一个XY问题。如果此答案无效,我将删除它。