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中获取一行。
有什么想法吗?
尝试
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
更新行来测试这一点。然后使用调试器进行调试。