C# 如何按列值筛选数据表?
我有一个关于数据表的问题。我从数据库中检索一个C# 如何按列值筛选数据表?,c#,asp.net,filter,datatable,adapter,C#,Asp.net,Filter,Datatable,Adapter,我有一个关于数据表的问题。我从数据库中检索一个DataTable,其中一列包含1或0。现在我只想检索该列中值为1的行 列的名称为ACTIVATE 这是我的数据表: DataTable table = new DataTable(TABLE); //How can I filter here so ACTIVATE == 1? adapter.Fill(table); connection.Open(); selectcommand.ExecuteReader(); return tab
DataTable
,其中一列包含1或0。现在我只想检索该列中值为1的行
列的名称为ACTIVATE
这是我的数据表
:
DataTable table = new DataTable(TABLE);
//How can I filter here so ACTIVATE == 1?
adapter.Fill(table);
connection.Open();
selectcommand.ExecuteReader();
return table;
您只需这样使用:
foundRows = table.Select("ACTIVATE = '1'");
它返回一个DataRow对象数组
DataTable results = table.Select("ACTIVATE = 1").CopyToDataTable();
这应该可以实现您想要的,基本上您可以像SQL一样查询数据表。通过SQL(首选)
通过Linq到数据表
(内存中):
除此之外,您不需要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 );
}
您不是在使用查询来填充数据表吗??在该查询中使用where条件对于查询中的逻辑,传递null以返回带有参数where(@filter is null或ACTIVATE=@filter)的all。添加一个Datatable.Select()筛选器,此答案将完成。:)@萨米斯。拉索尔:为什么?Linq功能更强大,强类型
字段
方法也支持空值,是更好的选择(如果可用)。编辑:然而,你是对的。相应地编辑了我的答案。+1当然,我刚才说了,所以要在一个答案中涵盖所有选项。Datatable.Select非常慢,特别是在有大量records@AntonioBakula不知道…thanxx,我今天学到了一些新东西。。!!这个答案必须被接受。
DataTable tblFiltered = table.AsEnumerable()
.Where(r => r.Field<int>("ACTIVATE") == 1)
.CopyToDataTable();
DataRow[] filteredRows = table.Select("ACTIVATE = 1");
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 );
}
return table;
DataTable results = table.Select("ACTIVATE = 1").CopyToDataTable();