为什么我的代码没有迭代?

Why is my code not iterating?

为什么我的代码没有按预期工作?其他(departmentName、employeeName 和 statusDescription)正在工作(如下所示)

int countRow = 1;
//Query for account status
var query = from emp in db.EmployeeDetails
            join stat in db.Status on emp.statusId equals stat.statusId
            join dep in db.Department on emp.departmentId equals dep.departmentId
            where emp.employeeName == name
            select new { emp, stat, dep };  
foreach (var q in query)
{

    Console.WriteLine("{0,-3} | {1,-10} | {2,10}\t\t | {3,10}",
       countRow,
       q.dep.departmentName,
       q.emp.employeeName,
       q.stat.statusDescription);                
    Console.WriteLine("-----------");                
    countRow++;// <---------not adding: output keeps printing 1
}

它在工作,但我的 countRow 的值一直为 1

现在,我的输出如下所示:

No.      Dep             Name      Status
1        Finance         John      Present
1        Education       Mary      Present
1        Recreational    Tom       Absent

我要找的是这个:

No.      Dep             Name      Status
1        Finance         John      Present
2        Education       Mary      Present
3        Recreational    Tom       Absent

更新: 看来我的 "query"(在查询中的 foreach var q 中)的计数值为 1。我想这就是我的问题的原因。有谁知道我该如何解决这个问题?

您似乎发布了多个查询的结果。

您的原始查询查找特定名称 (emp.employeeName == name),它可能会产生一个结果。您发布的结果中有多个名称,这意味着您 运行 此查询不止一次(可能在封闭循环中?)。每个查询都会将 countRow 初始化为 1,因此每次都会得到相同的数字。 如果您有多个同名员工,您会看到 1 以外的数字。正如评论所建议的那样,尝试找到封闭循环并将 countRow = 1 初始值设定项移到那里。