我需要在运行时确定从哪个视图填充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/

10-17 00:10