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#中的过滤函数主要用于数据及其相关操作数量庞大的情况。如果 DataTable 中的数据不断增加,那么对于行和列过滤来说唯一的救世主就是 DataTable 中的过滤器。
让我们检查一下 C# 中过滤 DataTable 的工作模式:
下面给出的是 C# DataTable Filter 的示例:
该程序演示了使用 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]); } } }
输出:
此程序用于演示 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]); } }
输出:
此程序演示了选择查询,其中 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"]); } } }
输出:
该程序通过选择像 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); } }
输出:
注意:为了克服上述评估数据表和通过评估值过滤数据表的情况,请正确涉及这组语句。
语句包括以下行:
DataRow[] rows = table.Select(“Anusua > 1”);
System.Console.WriteLine(rows.Length);
如果通过替换前面提到的示例中的 select 语句正确执行,上面两行将提供所需的输出。
输出结果为:
该程序演示了要过滤的数据表并执行求和操作,该操作将驻留在创建为求和的对象内,从中获取所需的总和并显示在输出中。
代码:
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# 和任何其他编程语言中的 DataTable 在处理大量数据时都发挥着关键作用。针对数据库及其后续子集的过滤也发挥着重要作用,因为数据库在从数据库获取和检索数据方面应始终进行优化和高效。
以上是C# 数据表过滤器的详细内容。更多信息请关注PHP中文网其他相关文章!