C# DataTable は、データ テーブルに関連するほとんどのオブジェクトとデータにアクセスするために使用される中心的なオブジェクトです。データテーブルは膨大な量のデータで構成されており、整理された形式ではないため、フィルターを適用する必要があります。 C# に関連する DataTable のフィルタリング プロパティを満たすには、データを整理および順序付けるためのフィルターを取得し、合理化された C# データベース フィルターを取得する必要があります。
構文:
C# DataTable フィルターに特定の構文はありませんが、次のように表される列に関連付けられたフィルター関数を使用します。
1 | dataView.RowFilter = "s_id=180" ;
|
ログイン後にコピー
リテラルに関連付けられた DataTable フィルター関数は次のように表されます:
1 | dataView.RowFilter = "s_name = 'anu'"
|
ログイン後にコピー
数値に関連付けられた DataTable フィルター関数は次のように表されます:
1 | dataView.RowFilter = "dt_of_brth = 1987"
|
ログイン後にコピー
C# で DataTable をフィルターする方法?
C# のフィルター関数は、データとそれに関連する操作の数が膨大な場合によく使用されます。 DataTable に存在するデータが増加した場合、行と列のフィルタリングに関する唯一の救世主は DataTable のフィルタです。
C# で DataTable をフィルターする動作パターンを確認してみましょう:
- C# での DataTable のフィルタリングは独自のものではなく、他のタイプのフィルタリング手法とは異なります。それでも、さまざまな方法で達成できます。
- DataTable のさまざまなフィルタリング方法には、必要な行または列を選択し、それに基づいてフィルタを適用する select(String) メソッドが含まれます。
- フィルタリングは、Select、Where、AND、OR、NOT 論理演算子を使用して実行でき、その上に値も適用されます。
- データ データ テーブルに存在する行と列でも、必要に応じて昇順または降順形式でデータを並べ替えて並べ替える並べ替え方法が使用されます。
- 文字列を列挙可能として選択すると、オブジェクトを保存するときに便利です。その後、計算に基づいてフィルターと順序演算を適用すると、目的の結果を得ることができます。
- 関連付けられた文字列を使用した DataTable の評価も、true または false の戻り関数に関して考慮する必要があります。
C# DataTable フィルターの例
以下は C# DataTable フィルターの例です:
例 #1
このプログラムは、AND、OR、NOT 条件のそれぞれについてフィルター ステートメントとして select ステートメントを使用することにより、行データのフィルター処理とフェッチを示します。次に示すように、指定された数値より大きく、他の上限より小さい数値を返します。出力。
コード:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | 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]);
}
}
}
|
ログイン後にコピー
出力:

例 #2
このプログラムは、出力に示されているように降順で並べ替えた後、DataRow オブジェクトの配列を返すために使用される DataTable フィルター式をデモンストレーションするために使用されます。
コード:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | 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]);
}
}
|
ログイン後にコピー
出力:

例 #3
このプログラムは、より新しい形式の日付を持つ 2 つの一致する行を DataTable が検索し、出力に示されているように DateTime を使用してフィルター処理される選択クエリを示します。
コード:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | 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" ]);
}
}
}
|
ログイン後にコピー
出力:

例 #4
このプログラムは、true にも false にも評価されず、望ましくない厄介なエラーをスローする A のような値を選択することによって無効な式を示します。
コード:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | 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 行は必要な出力を提供します。
出力は次のようになります:

例 #5
このプログラムは、フィルタリングされるデータ テーブルを示し、合計として作成されたオブジェクト内に常駐する合計演算を実行します。そこから必要な合計が取得され、出力に示されているように表示されます。
コード:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | 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 サイトの他の関連記事を参照してください。