如何在一定条件下从数据表中全选

本文关键字:数据表 全选 条件下 | 更新日期: 2023-09-27 18:21:11

我想在某种条件下从我的数据表中Select *,并将返回值放在同一数据表中。

 dt = from myRow in dt.AsEnumerable()
      where !string.IsNullOrEmpty( myRow.Field<string>("name") )
      select ;

我试试上面的东西。

如何在一定条件下从数据表中全选

我从您的代码中可以看到,您喜欢删除字段"Name"为空的所有行。这是正确的吗?

您得到的结果并不是直接的新数据表。相反,您将得到一个IEnumerable<DataRow>,其中包含您希望看到的所有行。

相反,您可以反转包含您不喜欢的所有内容的linq查询的结果,然后简单地从数据表中删除所有这些内容。

var rowsToDelete = dt.AsEnumerable()
                     .Where(row => String.IsNullOrEmpty(row.Field<string>("name"))
                     .ToList();
foreach(var row in rowsToDelete)
{
    dataTable.Rows.Remove(row);
}

创建一个具有非null值的新对象:

DataTable dt2 = new DataTable();
dt.AsEnumerable().Where(row => !row.IsNull("name")).Select(row => { dt2.Rows.Add(row); return true; });

从现有对象中删除空值:

dt.AsEnumerable().Where(row => row.IsNull("name")).Select((row, index) => { dt.Rows.RemoveAt(index); return true; });

对现有对象进行更改:

dt.AsEnumerable().Where(row => row.IsNull("name")).Select((row, index) =>
{
    System.Diagnostics.Debug.WriteLine("Name in Row # " + index + " is null.");
    row["Status"] = "Disabled";
    return true;
});