如何对DataTable进行检索和排序

显示结果

 

CustomerID CompanyName Country
WHITC White Clover Markets USA
TRAIH Trail's Head Gourmet Provisioners USA
THECR The Cracker Box USA
THEBI The Big Cheese USA
SPLIR Split Rail Beer & Ale USA
SAVEA Save-a-lot Markets USA
RATTC Rattlesnake Canyon Grocery USA
OLDWO Old World Delicatessen USA
LONEP Lonesome Pine Restaurant USA
LETSS Let's Stop N Shop USA
LAZYK Lazy K Kountry Store USA
HUNGC Hungry Coyote Import Store USA
GREAL Great Lakes Food Market USA


源代码


<%  @Import Namespace = " System.Data "   %>
<%  @Import Namespace = " System.Data.SqlClient "   %>
< HTML >
    
< HEAD >
        
< title > 使用DataTable进行检索和排序示例 </ title >
        
< script language = " C# "  runat = " server " >

            
void  Page_Load( object  sender, System.EventArgs e)
            
{
                
string ConnectionString = System.Configuration.ConfigurationSettings.AppSettings["ConnectionSqlServer"];
                
string Sql = "SELECT CustomerID, CompanyName, Country FROM Customers";

                SqlConnection thisConnection 
= new SqlConnection(ConnectionString);
                SqlDataAdapter adapter 
= new SqlDataAdapter(Sql, thisConnection);

                
// 创建DataTable对象
                DataTable table = new DataTable();

                
// 填充数据到DataTable
                adapter.Fill(table);

                
// 定义筛选条件字符串和排序字符串
                string strExpr = "Country = 'USA'";
                
string strSort = "CompanyName DESC";

                
// 获得经过筛选和排序后的数据
                DataRow [] resultRows = table.Select(strExpr, strSort);

                
// 显示经过筛选和排序后的数据
                DisplayRows(resultRows, DisplayLabel);
            }

            
            
//  显示DataRow数组中的内容
             public   void  DisplayRows(DataRow [] rows, Label label)
            
{
                
// 检查返回数据是否为空
                if(rows.Length <= 0)
                
{
                    label.Text 
= "没有数据";
                    
return;
                }

                label.Text 
= "";

                
// 遍历DataRow数组的行和列,显示数据
                label.Text += "<Table border='1'>";
                label.Text 
+= "<TR><TH>CustomerID</TH><TH>CompanyName</TH><TH>Country</TH></TR>";
                
foreach(DataRow row in rows)
                
{
                    label.Text 
+= "<TR>";
                    
for(int i=0; i<row.Table.Columns.Count; i++)
                    
{
                        label.Text 
+= "<TD>";
                        label.Text 
+= row[i];
                        label.Text 
+= "</TD>";
                    }

                    label.Text 
+= "</TR>";
                }

                label.Text 
+= "</Table>";
            }


        
</ script >
    
</ HEAD >
    
< body >
        
< form id = " Form1 "  method = " post "  runat = " server " >
            
< H3 > 使用DataTable进行检索和排序示例 </ H3 >
            
< asp:Label id = " DisplayLabel "  runat = " server " > Label </ asp:Label >
        
</ form >
    
</ body >
</ HTML >


DataTable.Select 方法  [C#]

获取 DataRow 对象的数组。

重载列表

获取所有 DataRow 对象的数组。

受 .NET Framework 精简版的支持。

public DataRow[] Select();

按照主键顺序(如果没有主键,则按照添加顺序)获取与筛选条件相匹配的所有 DataRow 对象的数组。

受 .NET Framework 精简版的支持。

public DataRow[] Select(string);

获取按照指定的排序顺序且与筛选条件相匹配的所有 DataRow 对象的数组。

受 .NET Framework 精简版的支持。

public DataRow[] Select(string, string);

获取与排序顺序中的筛选器以及指定的状态相匹配的所有 DataRow 对象的数组。

受 .NET Framework 精简版的支持。

public DataRow[] Select(string, string, DataViewRowState);

示例

以下示例使用筛选表达式和记录状态来返回 DataRow 对象的数组。

注意   此示例显示如何使用 Select 的一个重载版本。有关其他可用示例,请参阅单独的重载主题。

 

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 strExpr;

    string strSort;

    

    strExpr = "id > 5";

    // Sort descending by column named CompanyName.

    strSort = "name DESC";

    // Use the Select method to find all rows matching the filter.

    DataRow[] foundRows = 

        customerTable.Select( strExpr, strSort, 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 r in rows )

    {

        foreach( DataColumn c in r.Table.Columns )

        {

            Console.Write( "\t {0}", r[c] );

        }

        Console.WriteLine();

    }

}

没有可用于 C++ 或 JScript 的示例。若要查看 Visual Basic 或 C# 示例,请单击页左上角的“语言筛选器”按钮 语言筛选器

请参见


你可能感兴趣的:(Datatable)