首页 >后端开发 >C#.Net教程 >C# 数据表过滤器

C# 数据表过滤器

WBOY
WBOY原创
2024-09-03 15:33:17572浏览

C# DataTable 是一个中心对象,用于访问与数据表相关的大部分对象和数据。由于数据表包含大量数据并且没有组织格式,因此需要应用过滤器。为了满足C#相关的DataTable中的过滤属性,需要获取过滤器来对数据进行排列和排序,精简的C#数据库过滤器。

语法:

C# DataTable 过滤器没有特定的语法,但它仍然使用与列关联的过滤器函数,如下所示:

dataView.RowFilter = "s_id=180";

与文字关联的DataTable过滤函数表示如下:

dataView.RowFilter = "s_name = 'anu'"

与数值关联的DataTable过滤函数表示如下:

dataView.RowFilter = "dt_of_brth = 1987"

如何在C#中过滤数据表?

C#中的过滤函数主要用于数据及其相关操作数量庞大的情况。如果 DataTable 中的数据不断增加,那么对于行和列过滤来说唯一的救世主就是 DataTable 中的过滤器。

让我们检查一下 C# 中过滤 DataTable 的工作模式:

  • C# 中的过滤 DataTable 并不是唯一的,并且与其他类型的过滤技术不同;尽管如此,它仍然可以通过多种方式来实现。
  • 过滤 DataTable 的方法有多种,包括 select(String) 方法,该方法选择所需的行或列,然后基于该行或列应用过滤器。
  • 可以使用 Select、Where、AND、OR、NOT 逻辑运算符来完成过滤,并在此基础上应用值。
  • 数据表中的数据行和列也使用排序方法,根据需要以升序或降序格式对数据进行排序和排序。
  • 选择字符串作为可枚举在保存任何对象时非常有用,然后根据计算应用过滤和排序操作有助于提供所需的结果。
  • 对 DataTable 及其关联字符串的评估也需要注意 true 或 false 返回函数。

C# 数据表过滤器示例

下面给出的是 C# DataTable Filter 的示例:

示例#1

该程序演示了使用 select 语句作为过滤器语句,对于每个 AND、OR 和 NOT 条件来过滤和获取行数据,并返回大于所提到的数字但小于其他上限的任何数字,如下所示输出。

代码:

using System;
using System.Data;
using System.Xml;
using System.Collections.Generic;
using System.Linq;
using System.Data.DataSetExtensions;
public class Data_tbl_Demo
{
public static void Main()
{
DataTable tbl_1 = new DataTable("Creation of Data for players");
tbl_1.Columns.Add(new DataColumn("Size_of_team", typeof(int)));
tbl_1.Columns.Add(new DataColumn("Team_work", typeof(char)));
tbl_1.Rows.Add(50, 'c');
tbl_1.Rows.Add(100, 'c');
tbl_1.Rows.Add(250, 'd');
tbl_1.Rows.Add(567, 'd');
tbl_1.Rows.Add(123, 'd');
DataRow[] rslt = tbl_1.Select("Size_of_team >= 123 AND Team_work = 'd'");
foreach (DataRow row in rslt)
{
Console.WriteLine("{0}, {1}", row[0], row[1]);
}
}
}

输出:

C# 数据表过滤器

示例#2

此程序用于演示 DataTable 过滤表达式,该表达式用于按降序排序后返回 DataRow 对象数组,如输出所示。

代码:

using System;
using System.Data;
using System.Xml;
using System.Collections.Generic;
using System.Linq;
using System.Data.DataSetExtensions;
public class Data_tbl_Demo
{
public static void Main()
{
DataTable tbl2_2 = new DataTable("Orders_plcd");
tbl2_2.Columns.Add("Order_ID", typeof(Int32));
tbl2_2.Columns.Add("Order_Quantity", typeof(Int32));
tbl2_2.Columns.Add("Company_Name", typeof(string));
tbl2_2.Columns.Add("Date_on_day", typeof(DateTime));
DataRow nw_row = tbl2_2.NewRow();
nw_row["Order_ID"] = 1;
nw_row["Order_Quantity"] = 5;
nw_row["Company_Name"] = "New_Company_Nm";
nw_row["Date_on_day"] = "2014, 5, 25";
tbl2_2.Rows.Add(nw_row);
DataRow nw_row2 = tbl2_2.NewRow();
nw_row2["Order_ID"] = 2;
nw_row2["Order_Quantity"] = 6;
nw_row2["Company_Name"] = "New_Company_Nm2";
tbl2_2.Rows.Add(nw_row2);
DataRow nw_row3 = tbl2_2.NewRow();
nw_row3["Order_ID"] = 3;
nw_row3["Order_Quantity"] = 8;
nw_row3["Company_Name"] = "New_Company_Nm3";
tbl2_2.Rows.Add(nw_row3);
string exprsn = "Date_on_day = '5/25/2014' or Order_ID = 2";
string sort_Order = "Company_Name DESC";
DataRow[] sorted_Rows;
sorted_Rows = tbl2_2.Select(exprsn, sort_Order);
for (int i = 0; i < sorted_Rows.Length; i++)
Console.WriteLine(sorted_Rows[i][2]);
}
}

输出:

C# 数据表过滤器

示例#3

此程序演示了选择查询,其中 DataTable 查找两个匹配行,这些行的日期采用较新的格式,并使用 DateTime 进行过滤,如输出所示。

代码:

using System;
using System.Data;
using System.Xml;
using System.Collections.Generic;
using System.Linq;
using System.Data.DataSetExtensions;
public class Using_Date_Time
{
public static void Main()
{
DataTable tbl_dt_time = new DataTable("Widgets");
tbl_dt_time.Columns.Add(new DataColumn("rw_ID", typeof(int)));
tbl_dt_time.Columns.Add(new DataColumn("Date", typeof(DateTime)));
tbl_dt_time.Rows.Add(180, new DateTime(2003, 1, 1));
tbl_dt_time.Rows.Add(123, new DateTime(2000,1, 1));
tbl_dt_time.Rows.Add(350, new DateTime(2001,1, 1));
DataRow[] filterd_result = tbl_dt_time.Select("Date > #6/1/2001#");
foreach (DataRow row in filterd_result)
{
Console.WriteLine(row["rw_ID"]);
}
}
}

输出:

C# 数据表过滤器

示例#4

该程序通过选择像 A 这样的值来说明无效表达式,该值不会被评估为 true 或 false,并会抛出一个不希望出现的令人讨厌的错误。

代码:

using System;
using System.Data;
using System.Xml;
using System.Collections.Generic;
using System.Linq;
using System.Data.DataSetExtensions;
public class Using_Date_Time
{
public static void Main()
{
DataTable table = new DataTable();
table.Columns.Add("Anusua", typeof(int));
table.Rows.Add(1);
table.Rows.Add(2);
table.Rows.Add(3);
table.Rows.Add(4);
table.Rows.Add(5);
DataRow[] rows = table.Select("Anusua");
System.Console.WriteLine(rows.Length);
}
}

输出:

C# 数据表过滤器

注意:为了克服上述评估数据表和通过评估值过滤数据表的情况,请正确涉及这组语句。

语句包括以下行:

DataRow[] rows = table.Select(“Anusua > 1”);

System.Console.WriteLine(rows.Length);

如果通过替换前面提到的示例中的 select 语句正确执行,上面两行将提供所需的输出。

输出结果为:

C# 数据表过滤器

示例#5

该程序演示了要过滤的数据表并执行求和操作,该操作将驻留在创建为求和的对象内,从中获取所需的总和并显示在输出中。

代码:

using System;
using System.Data;
using System.Xml;
using System.Collections.Generic;
using System.Linq;
using System.Data.DataSetExtensions;
public class Program
{
public static void Main()
{
DataTable dt_4 = new DataTable();
dt_4.Columns.Add("emp_Id",typeof(int));
dt_4.Columns.Add("customer_Name",typeof(string));
dt_4.Columns.Add("Amount_type",typeof(decimal));
dt_4.Rows.Add(1,"A",50);
dt_4.Rows.Add(2,"b",68);
dt_4.Rows.Add(3,"c",22);
dt_4.Rows.Add(4,"d",null);
decimal dec_ml = 0;
object sum_Obj;
sum_Obj = dt_4.Compute("Sum(Amount_type)", string.Empty);
decimal total = dt_4.AsEnumerable().Where(r => !r.IsNull("Amount_type") && decimal.TryParse(r["Amount_type"].ToString(), out dec_ml)).Sum(r => dec_ml);
Console.WriteLine(sum_Obj);
Console.WriteLine(total);
}
}

输出:

C# 数据表过滤器

结论

C# 和任何其他编程语言中的 DataTable 在处理大量数据时都发挥着关键作用。针对数据库及其后续子集的过滤也发挥着重要作用,因为数据库在从数据库获取和检索数据方面应始终进行优化和高效。

以上是C# 数据表过滤器的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
上一篇:C# DataTable下一篇:JSON Parser in C#