gpt4 book ai didi

c# - IQueryable 没有 Count()?

转载 作者:行者123 更新时间:2023-11-30 14:12:26 25 4
gpt4 key购买 nike

通常,当我使用 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 s 而不是动态对象。

编辑

正如 D Stanley 在评论中指出的那样,如果您不想仅为此操作创建 POCO,如果您声明 departments作为var departments , 你会得到正确的类型。

关于c# - IQueryable 没有 Count()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17578510/

25 4 0