我需要在运行时确定从哪个视图填充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();
最佳答案
Count
扩展名用于IQueryable<>
类型,这就是为什么不能在IQueryable
上使用它的原因。
但是,如果以这种方式声明记录集,covariance应该允许您的代码工作:
IQueryable<Object> recordSet;
正如@hvd在下面的注释中指出的,此处的协方差仅适用于引用类型。
关于c# - 获取基本IQueryable实例的Count(),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23413051/