ホームページ >バックエンド開発 >C#.Net チュートリアル >C# データテーブル フィルター
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 フィルターの例です:
このプログラムは、AND、OR、NOT 条件のそれぞれについてフィルター ステートメントとして select ステートメントを使用することにより、行データのフィルター処理とフェッチを示します。次に示すように、指定された数値より大きく、他の上限より小さい数値を返します。出力。
コード:
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]); } } }
出力:
このプログラムは、出力に示されているように降順で並べ替えた後、DataRow オブジェクトの配列を返すために使用される DataTable フィルター式をデモンストレーションするために使用されます。
コード:
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]); } }
出力:
このプログラムは、より新しい形式の日付を持つ 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"]); } } }
出力:
このプログラムは、true にも false にも評価されず、望ましくない厄介なエラーをスローする A のような値を選択することによって無効な式を示します。
コード:
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[] 行 = table.Select(“Anusua > 1”);
System.Console.WriteLine(rows.Length);
前述の例のように select ステートメントを置き換えて適切に実行すると、上の 2 行は必要な出力を提供します。
出力は次のようになります:
このプログラムは、フィルタリングされるデータ テーブルを示し、合計として作成されたオブジェクト内に常駐する合計演算を実行します。そこから必要な合計が取得され、出力に示されているように表示されます。
コード:
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 中国語 Web サイトの他の関連記事を参照してください。