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