DataTable.Select メソッド

定義

DataRow オブジェクトの配列を取得します。

オーバーロード

Select()

すべての DataRow オブジェクトの配列を取得します。

Select(String)

フィルター基準と一致するすべての DataRow オブジェクトの配列を取得します。

Select(String, String)

フィルター基準と一致するすべての DataRow オブジェクトの配列を、指定した並べ替え順で取得します。

Select(String, String, DataViewRowState)

フィルター基準と一致するすべての DataRow オブジェクトの配列を、指定した状態と一致する並べ替え順に取得します。

Select()

ソース:
DataTable.cs
ソース:
DataTable.cs
ソース:
DataTable.cs

すべての DataRow オブジェクトの配列を取得します。

public:
 cli::array <System::Data::DataRow ^> ^ Select();
public System.Data.DataRow[] Select ();
member this.Select : unit -> System.Data.DataRow[]
Public Function Select () As DataRow()

戻り値

DataRow オブジェクトの配列。

次の例では、 メソッドを使用して オブジェクトの DataRow 配列を Select 返します。

private void GetRows()
{
    // Get the DataTable of a DataSet.
    DataTable table = DataSet1.Tables["Suppliers"];
    DataRow[] rows = table.Select();

    // Print the value one column of each DataRow.
    for(int i = 0; i < rows.Length ; i++)
    {
        Console.WriteLine(rows[i]["CompanyName"]);
    }
}
Private Sub GetRows()
    ' Get the DataTable of a DataSet.
    Dim table As DataTable = DataSet1.Tables("Suppliers")
    Dim rows() As DataRow = table.Select()

    Dim i As Integer
    ' Print the value one column of each DataRow.
    For i = 0 to rows.GetUpperBound(0)
       Console.WriteLine(rows(i)("CompanyName"))
    Next i
End Sub

注釈

適切な並べ替え順序を確認するには、 または Select(String, String, DataViewRowState)を使用して並べ替え条件をSelect(String, String)指定します。

こちらもご覧ください

適用対象

Select(String)

ソース:
DataTable.cs
ソース:
DataTable.cs
ソース:
DataTable.cs

フィルター基準と一致するすべての DataRow オブジェクトの配列を取得します。

public:
 cli::array <System::Data::DataRow ^> ^ Select(System::String ^ filterExpression);
public System.Data.DataRow[] Select (string? filterExpression);
public System.Data.DataRow[] Select (string filterExpression);
member this.Select : string -> System.Data.DataRow[]
Public Function Select (filterExpression As String) As DataRow()

パラメーター

filterExpression
String

行にフィルターをかけるために使用する基準。

戻り値

DataRow オブジェクトの配列。

次の例では、フィルター式を使用して オブジェクトの DataRow 配列を返します。

private void GetRowsByFilter()
{
    DataTable table = DataSet1.Tables["Orders"];
    // Presuming the DataTable has a column named Date.
    string expression;
    expression = "Date > #1/1/00#";
    DataRow[] foundRows;

    // Use the Select method to find all rows matching the filter.
    foundRows = table.Select(expression);

    // Print column 0 of each returned row.
    for(int i = 0; i < foundRows.Length; i ++)
    {
        Console.WriteLine(foundRows[i][0]);
    }
}
Private Sub GetRowsByFilter()
    
    Dim table As DataTable = DataSet1.Tables("Orders")

    ' Presuming the DataTable has a column named Date.
    Dim expression As String
    expression = "Date > #1/1/00#"
    Dim foundRows() As DataRow

    ' Use the Select method to find all rows matching the filter.
    foundRows = table.Select(expression)

    Dim i As Integer
    ' Print column 0 of each returned row.
    For i = 0 to foundRows.GetUpperBound(0)
       Console.WriteLine(foundRows(i)(0))
    Next i
End Sub

注釈

引数を filterExpression 作成するには、フィルターを作成するためにクラスのプロパティ値に DataColumn 適用されるの Expression と同じ規則を使用します。

適切な並べ替え順序を確認するには、 または Select(String, String, DataViewRowState)を使用して並べ替え条件をSelect(String, String)指定します。

フィルターの列に null 値が含まれている場合は、結果の一部になりません。

こちらもご覧ください

適用対象

Select(String, String)

ソース:
DataTable.cs
ソース:
DataTable.cs
ソース:
DataTable.cs

フィルター基準と一致するすべての DataRow オブジェクトの配列を、指定した並べ替え順で取得します。

public:
 cli::array <System::Data::DataRow ^> ^ Select(System::String ^ filterExpression, System::String ^ sort);
public System.Data.DataRow[] Select (string? filterExpression, string? sort);
public System.Data.DataRow[] Select (string filterExpression, string sort);
member this.Select : string * string -> System.Data.DataRow[]
Public Function Select (filterExpression As String, sort As String) As DataRow()

パラメーター

filterExpression
String

行にフィルターをかけるために使用する基準。

sort
String

列と並べ替え方向を指定する文字列。

戻り値

フィルター式と一致する DataRow オブジェクトの配列。

次の例では、フィルター式を使用して オブジェクトの DataRow 配列を返します。

using System;
using System.Data;

public class A {

   public static void Main() {
      DataTable table = new DataTable("Orders");
      table.Columns.Add("OrderID", typeof(Int32));
      table.Columns.Add("OrderQuantity", typeof(Int32));
      table.Columns.Add("CompanyName", typeof(string));
      table.Columns.Add("Date", typeof(DateTime));

      DataRow newRow = table.NewRow();
      newRow["OrderID"] = 1;
      newRow["OrderQuantity"] = 3;
      newRow["CompanyName"] = "NewCompanyName";
      newRow["Date"] = "1979, 1, 31";

      // Add the row to the rows collection.
      table.Rows.Add(newRow);

      DataRow newRow2 = table.NewRow();
      newRow2["OrderID"] = 2;
      newRow2["OrderQuantity"] = 2;
      newRow2["CompanyName"] = "NewCompanyName1";
      table.Rows.Add(newRow2);

      DataRow newRow3 = table.NewRow();
      newRow3["OrderID"] = 3;
      newRow3["OrderQuantity"] = 2;
      newRow3["CompanyName"] = "NewCompanyName2";
      table.Rows.Add(newRow3);

      // Presuming the DataTable has a column named Date.
      string expression = "Date = '1/31/1979' or OrderID = 2";
      // string expression = "OrderQuantity = 2 and OrderID = 2";

      // Sort descending by column named CompanyName.
      string sortOrder = "CompanyName ASC";
      DataRow[] foundRows;

      // Use the Select method to find all rows matching the filter.
      foundRows = table.Select(expression, sortOrder);

      // Print column 0 of each returned row.
      for (int i = 0; i < foundRows.Length; i++)
         Console.WriteLine(foundRows[i][2]);
   }
}
Imports System.Data

Public Class A

   Public Shared Sub Main()
      Dim table As New DataTable("Orders")
      table.Columns.Add("OrderID", GetType(Int32))
      table.Columns.Add("OrderQuantity", GetType(Int32))
      table.Columns.Add("CompanyName", GetType(String))
      table.Columns.Add("Date", GetType(DateTime))

      Dim newRow As DataRow = table.NewRow()
      newRow("OrderID") = 1
      newRow("OrderQuantity") = 3
      newRow("CompanyName") = "NewCompanyName"
      newRow("Date") = "1979, 1, 31"

      ' Add the row to the rows collection.
      table.Rows.Add(newRow)

      Dim newRow2 As DataRow = table.NewRow()
      newRow2("OrderID") = 2
      newRow2("OrderQuantity") = 2
      newRow2("CompanyName") = "NewCompanyName1"
      table.Rows.Add(newRow2)

      Dim newRow3 As DataRow = table.NewRow()
      newRow3("OrderID") = 3
      newRow3("OrderQuantity") = 2
      newRow3("CompanyName") = "NewCompanyName2"
      table.Rows.Add(newRow3)

      ' Presuming the DataTable has a column named Date.
      Dim expression As String = "Date = '1/31/1979' or OrderID = 2"
      ' Dim expression As String = "OrderQuantity = 2 and OrderID = 2"

      ' Sort descending by column named CompanyName.
      Dim sortOrder As String = "CompanyName ASC"
      Dim foundRows As DataRow()

      ' Use the Select method to find all rows matching the filter.
      foundRows = table.[Select](expression, sortOrder)

      ' Print column 0 of each returned row.
      For i As Integer = 0 To foundRows.Length - 1
         Console.WriteLine(foundRows(i)(2))
      Next
   End Sub
End Class

注釈

引数をfilterExpression作成するには、クラスExpressionのプロパティ値を作成するために同じ規則をDataColumn使用します。 引数は Sort 、クラス Expression の文字列を作成する場合にも同じ規則を使用します。

フィルターの列に null 値が含まれている場合は、結果の一部になりません。

こちらもご覧ください

適用対象

Select(String, String, DataViewRowState)

ソース:
DataTable.cs
ソース:
DataTable.cs
ソース:
DataTable.cs

フィルター基準と一致するすべての DataRow オブジェクトの配列を、指定した状態と一致する並べ替え順に取得します。

public:
 cli::array <System::Data::DataRow ^> ^ Select(System::String ^ filterExpression, System::String ^ sort, System::Data::DataViewRowState recordStates);
public System.Data.DataRow[] Select (string? filterExpression, string? sort, System.Data.DataViewRowState recordStates);
public System.Data.DataRow[] Select (string filterExpression, string sort, System.Data.DataViewRowState recordStates);
member this.Select : string * string * System.Data.DataViewRowState -> System.Data.DataRow[]
Public Function Select (filterExpression As String, sort As String, recordStates As DataViewRowState) As DataRow()

パラメーター

filterExpression
String

行にフィルターをかけるために使用する基準。

sort
String

列と並べ替え方向を指定する文字列。

recordStates
DataViewRowState

DataViewRowState 値のいずれか 1 つ。

戻り値

DataRow オブジェクトの配列。

次の例では、フィルター式とレコード状態を使用して、 オブジェクトの DataRow 配列を返します。

private static void GetRowsByFilter()
{
    DataTable customerTable = new DataTable("Customers");
    // Add columns
    customerTable.Columns.Add("id", typeof(int));
    customerTable.Columns.Add("name", typeof(string));

    // Set PrimaryKey
    customerTable.Columns[ "id" ].Unique = true;
    customerTable.PrimaryKey = new DataColumn[]
        { customerTable.Columns["id"] };

    // Add ten rows
    for(int id=1; id<=10; id++)
    {
        customerTable.Rows.Add(
            new object[] { id, string.Format("customer{0}", id) });
    }
    customerTable.AcceptChanges();

    // Add another ten rows
    for(int id=11; id<=20; id++)
    {
        customerTable.Rows.Add(
            new object[] { id, string.Format("customer{0}", id) });
    }

    string expression;
    string sortOrder;

    expression = "id > 5";
    // Sort descending by column named CompanyName.
    sortOrder = "name DESC";
    // Use the Select method to find all rows matching the filter.
    DataRow[] foundRows =
        customerTable.Select(expression, sortOrder,
        DataViewRowState.Added);

    PrintRows(foundRows, "filtered rows");

    foundRows = customerTable.Select();
    PrintRows(foundRows, "all rows");
}

private static void PrintRows(DataRow[] rows, string label)
{
    Console.WriteLine("\n{0}", label);
    if(rows.Length <= 0)
    {
        Console.WriteLine("no rows found");
        return;
    }
    foreach(DataRow row in rows)
    {
        foreach(DataColumn column in row.Table.Columns)
        {
            Console.Write("\table {0}", row[column]);
        }
        Console.WriteLine();
    }
}
Private Sub GetRowsByFilter()

    Dim customerTable As New DataTable("Customers")

    ' Add columns
    customerTable.Columns.Add("id", GetType(Integer))
    customerTable.Columns.Add("name", GetType(String))

    ' Set PrimaryKey
    customerTable.Columns("id").Unique = True
    customerTable.PrimaryKey = New DataColumn() _
        {customerTable.Columns("id")}

    ' add ten rows
    Dim id As Integer
    For id = 1 To 10
        customerTable.Rows.Add( _
        New Object() {id, String.Format("customer{0}", id)})
    Next id
    customerTable.AcceptChanges()

    ' add another ten rows
    For id = 11 To 20
        customerTable.Rows.Add( _
        New Object() {id, String.Format("customer{0}", id)})
    Next id

    Dim expression As String
    Dim sortOrder As String

    expression = "id > 5"
    ' Sort descending by CompanyName column.
    sortOrder = "name DESC"

    ' Use the Select method to find all rows matching the filter.
    Dim foundRows As DataRow() = _
        customerTable.Select(expression, sortOrder, _
        DataViewRowState.Added)

    PrintRows(foundRows, "filtered rows")

    foundRows = customerTable.Select()
    PrintRows(foundRows, "all rows")
End Sub

Private Sub PrintRows(ByVal rows() As DataRow, ByVal label As String)
    Console.WriteLine("\n{0}", label)
    If rows.Length <= 0 Then
        Console.WriteLine("no rows found")
        Exit Sub
    End If

    Dim row As DataRow
    Dim column As DataColumn
    For Each row In rows
        For Each column In row.Table.Columns
            Console.Write("\table {0}", row(column))
        Next column
        Console.WriteLine()
    Next row
End Sub

注釈

引数をfilterExpression作成するには、クラスExpressionのプロパティ値を作成するために同じ規則をDataColumn使用します。 引数は Sort 、クラス Expression の文字列を作成する場合にも同じ規則を使用します。

フィルターの列に null 値が含まれている場合は、結果の一部になりません。

こちらもご覧ください

適用対象