我在C#中有一个LINQ查询,它运行在从SQL Server exectution生成的数据表中:
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上有行,据我所知subjectWithoutParent从LINQ获取至少一行。
有什么想法吗?
答案 0 :(得分:2)
尝试
IEnumerable<DataRow> subjectsWithoutParent = (from row in
dtSubjects.AsEnumerable()
where row["ParentID"] != DBNull.Value &&
row.Field<int>("ParentID") == 0
select row).ToList<DataRow>();
然后检查subjectsWithoutParent.Any()
是否检索数据?
答案 1 :(得分:0)
您确定过滤条件并未删除所有行(如果所有行都具有非null且非零的ParentID值,则会出现这种情况)?您可以通过注释Linq查询中的where
行和foreach中的rowSubject
更新行来测试这一点。然后用调试器点击它。