【问题标题】:How I can filter my DataTable by Column Value?如何按列值过滤我的 DataTable?
【发布时间】:2012-12-04 10:46:32
【问题描述】:

我有一个关于DataTable 的问题。我从数据库中检索DataTable,其中一列包含 1 或 0。现在我只想检索该列中 1 值为 1 的行。

列的名称是ACTIVATE

这是我的DataTable

DataTable table = new DataTable(TABLE);

//How can I filter here so ACTIVATE == 1?

adapter.Fill(table);

connection.Open();

selectcommand.ExecuteReader();

return table;

【问题讨论】:

  • 你不是使用查询来填充数据表吗?在该查询中使用 where 条件
  • 做查询中的逻辑,传null返回所有带参数WHERE(@filter为NULL OR ACTIVATE = @filter)

标签: c# asp.net filter datatable adapter


【解决方案1】:

通过 SQL(首选)

SELECT * FROM dbo.Table WHERE ACTIVATE = 1

通过Linq-To-Datatable(在内存中):

DataTable tblFiltered = table.AsEnumerable()
                             .Where(r => r.Field<int>("ACTIVATE") == 1)
                             .CopyToDataTable();

如果您仍在使用 .NET 2,则可以使用 DataTable.Select

DataRow[] filteredRows = table.Select("ACTIVATE = 1");

除此之外,您不需要selectcommand.ExecuteReader() 来填写表格。

DataTable table = new Datatable();
using(var con = new SqlConnection(connectionString))
using(var cmd = new SqlCommand("SELECT * FROM dbo.Table WHERE ACTIVATE = 1", con))
using(var da = new SqlDataAdapter(cmd))
{
    da.Fill( table );
}

【讨论】:

  • 添加一个 Datatable.Select() 过滤器,这个答案就完成了。 :)
  • @SamyS.Rathore:为什么? Linq 功能更强大,并且还支持可空值的强类型 Field 方法是更好的选择(如果可用)。编辑:但是,你是对的。相应地编辑了我的答案。
  • +1 offcourse 它,我只是这么说是为了在一个答案中涵盖所有选项。
  • Datatable.Select 慢得要命,尤其是记录较多的情况下
  • @AntonioBakula 不知道...thanxx,我今天学到了一些新东西..!!这个答案必须被接受。
【解决方案2】:

您只需像这样使用DataTable.Select

 foundRows = table.Select("ACTIVATE = '1'");

它返回一个 DataRow 对象数组。

【讨论】:

    【解决方案3】:
    DataTable results = table.Select("ACTIVATE = 1").CopyToDataTable();
    

    应该可以实现你想要的,基本上你可以像SQL一样查询数据表了。

    【讨论】:

      【解决方案4】:
      return table;
      DataTable results = table.Select("ACTIVATE = 1").CopyToDataTable();
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-10-18
        • 1970-01-01
        • 1970-01-01
        • 2021-10-27
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多