Linq查询数据表后无法正常工作

时间:2012-02-22 09:37:55

标签: c# linq datatable

我在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获取至少一行。

有什么想法吗?

2 个答案:

答案 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更新行来测试这一点。然后用调试器点击它。