我需要在运行时确定从哪个视图填充recordSet
。但是,当我将recordSet
声明为IQueryable
时,我无法访问Count()
等函数
如果我将recordSet
声明为IQueryable<View_A>
,那么我可以访问,但我已锁定该类型。我可以使用IQueryable
一些更通用的类型吗?
IQueryable recordSet;
if (Flag)
recordSet = db.View_A.Where(v => v.ID == Id);
else
recordSet = db.View_B.Where(v => v.ID == Id);
int recordCount = recordSet.Count(); //complains about Count();
答案 0 :(得分:1)
Count
扩展名适用于IQueryable<>
类型,这就是您无法在IQueryable
上使用它的原因。
但是,如果您以这种方式声明记录集,covariance应允许您的代码正常工作:
IQueryable<Object> recordSet;
正如@hvd在下面的评论中所指出的,此处的协方差仅适用于参考类型。