foreach之后对数据表的Linq查询不起作用

本文关键字:Linq 查询 不起作用 数据表 之后 foreach | 更新日期: 2023-09-27 18:25:19

我在C#中有一个LINQ查询,它在SQL Server执行生成的数据表上运行:

DataTable dtSubjects = db.ExecuteDataTable();
            var subjectsWithoutParent = from row in dtSubjects.AsEnumerable() 
                                        where row["ParentID"] != DBNull.Value && row.Field<int>("ParentID") == 0 
                                        select row;

之后,有一个foreach应该在从LINQ返回的每个DataRow上运行。但是,foeach代码不会运行。

foreach (DataRow rowSubject in subjectsWithoutParent)
            {
                rowSubject["ParentID"] = DBNull.Value;
            }

Datatable上有行,据我所知,subjectsWithoutParent至少从LINQ中获取一行。

有什么想法吗?

foreach之后对数据表的Linq查询不起作用

尝试

IEnumerable<DataRow> subjectsWithoutParent = (from row in 
dtSubjects.AsEnumerable()                                          
where row["ParentID"] != DBNull.Value && 
row.Field<int>("ParentID") == 0                                          
select row).ToList<DataRow>();

然后检查CCD_ 1是否正在检索数据?

是否确定筛选条件没有删除所有行(如果所有行的ParentID值都为非空且非零,则会出现这种情况)?您可以通过注释掉Linq查询中的where行和foreach中的rowSubject更新行来测试这一点。然后使用调试器进行调试。