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

时间:2011-12-14 10:08:31

标签: 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;
}

//来自以下链接 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"));

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

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

谢谢, Daljit Singh

1 个答案:

答案 0 :(得分:8)

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

var t = dt.AsEnumerable().Where(dataRow => dataRow.RowState != DataRowState.Deleted &&...

应该做的伎俩