c# - 获取基本 IQueryable 实例的 Count()

标签 c# .net linq entity-framework

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

相关文章:

c# - 使用 LINQ 解析对象内部对象列表中的 Xml 对象

c# - 代码优先,当我启用迁移时,我得到 “No context type was found in the assembly ' DOC'”

asp.net - ASP.Net/C#,在页面上的某些控件之间循环?

C# 使用 LINQ 读取和汇总文本文件

linq - 将数据表转换为嵌套对象

c# - 4.0 .NET Framework 中的所有通用集合/类型是什么?

c# - ASP.NET5 MVC6 的模型绑定(bind)问题

c# - 从(无限)IEnumerable 中获取 n 个不同项目的简单 LINQ 方式

c# - Ajax 调用 .Net 并发送回 cookie

c# - 如何通知异常并继续