通过考虑已删除的行来使用linq过滤数据表

dal*_*jit 1 linq

我有以下数据表 -

static DataTable GetTable()
{
  //
  // Here we create a DataTable with four columns.
  //
DataTable table = new DataTable();
table.Columns.Add("Dosage", typeof(int));
table.Columns.Add("Drug", typeof(string));
table.Columns.Add("Patient", typeof(string));
table.Columns.Add("Date", typeof(DateTime));

//
// Here we add five DataRows.
//
table.Rows.Add(25, "Indocin", "David", DateTime.Now);
table.Rows.Add(50, "Enebrel", "Sam", DateTime.Now);
table.Rows.Add(10, "Hydralazine", "Christoff", DateTime.Now);
table.Rows.Add(21, "Combivent", "Janet", DateTime.Now);
table.Rows.Add(100, "Dilantin", "Melanie", DateTime.Now);
return table;
}
Run Code Online (Sandbox Code Playgroud)

//取自以下链接 http://www.dotnetperls.com/datatable

在PageLoad上,我执行以下代码 -

DataTable dt = GetTable();
dt.AcceptChanges();
dt.Rows[0].Delete();
var t = dt.AsEnumerable().Where(dataRow => dataRow.Field<string>        ("Drug").Equals("Enebrel"));
Run Code Online (Sandbox Code Playgroud)

它抛出一个错误,无法从已删除的行中获取数据.

有没有办法过滤告诉linq没有考虑删除的行.

谢谢,Daljit Singh

小智 8

您可以使用类似的方式指定在linq中排除已删除的行

var t = dt.AsEnumerable().Where(dataRow => dataRow.RowState != DataRowState.Deleted &&...
Run Code Online (Sandbox Code Playgroud)

这应该够了吧