获取基本IQueryable实例的Count()

时间:2014-05-01 17:30:49

标签: c# .net linq entity-framework

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

1 个答案:

答案 0 :(得分:1)

Count扩展名适用于IQueryable<>类型,这就是您无法在IQueryable上使用它的原因。

但是,如果您以这种方式声明记录集,covariance应允许您的代码正常工作:

IQueryable<Object> recordSet;

正如@hvd在下面的评论中所指出的,此处的协方差仅适用于参考类型。