c# – IQueryable没有Count()?
发布时间:2020-12-16 01:55:55 所属栏目:百科 来源:网络整理
导读:通常,当我使用LINQ to SQL时,我可以使用Count()来获取返回的记录数.但是,在这种情况下,Count()方法不可用,就好像它没有为对象定义一样.我不确定为什么会这样.这是代码: IQueryable departments; if (role == "ADMIN") { departments = db.Departments.Selec
通常,当我使用LINQ to SQL时,我可以使用Count()来获取返回的记录数.但是,在这种情况下,Count()方法不可用,就好像它没有为对象定义一样.我不确定为什么会这样.这是代码:
IQueryable departments; if (role == "ADMIN") { departments = db.Departments.Select(d => new {d.DepartmentID,FullName = d.Division.DivisionName + ": " + d.DepartmentName}) .OrderBy(d => d.FullName); } else { departments = db.J_DeptAdmins.Where(jda => jda.AdminUserID == userID) .Select(d => new {d.DepartmentID,FullName = d.Department.Division.DivisionName + ": " + d.Department.DepartmentName}) .OrderBy(d => d.FullName); if (departments.Count() > 0) //Error is here { drpDepartment.Style.Add("display","none"); lblDisplayDepartment.Style.Add("display","none"); } } 解决方法
这是因为您已将其声明为IQueryable而非IQueryable< T>.请参阅
this link,其中定义了您习惯的所有多汁扩展方法:)
现在,我明白为什么要这样做,因为你正在创建动态对象.考虑创建一个POCO类,ala: public class MyPOCO { public int DepartmentID { get; set; } public string FullName { get; set; } /* etc... */ } 然后有: IQueryable<MyPOCO> departments; 显然,创建新的MyPOCO而不是动态对象. 编辑 正如D Stanley在评论中指出的那样,如果您不想仅为此操作创建POCO,如果您将部门声明为var部门,您将获得正确的类型. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |