当然能实现了,select里就是你要选择的条件

解决方案 »

  1.   

    to:kuangsha007(狂晕) 
    老大,我就是不知道,Select(string, string, DataViewRowState)里的三个参数怎么来填,它返回的是DataRow[],dataRow里只有我想要的几列吗。
      

  2.   

    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" );
    }
      

  3.   

    DataRow[] 里是你想要的几行
      

  4.   

    不知道的话查查MSDN嘛!.NET里面很多都有详尽的中文教程。
      

  5.   

    to:kuangsha007(狂晕) 
    谢谢你了。
    的确这样可以得到类似于 select * from data where id > 5  order by name;的结果
    但是我想要的是类似于 select name ,sum(money) from data group by name;的结果也就是得到指定的列,并分类汇总。DataTable能实现吗?
      

  6.   

    汇总类查询好象要Sql语句才行
      

  7.   

    如果是数据库就好实现,现在是不连数据库,在程序里直接生成一些数据,再对这些数据进行分类汇总。生成数据可以放在DataTable里,要是能对DataTable有sql语句似的操作就好了。
      

  8.   

    不大清楚你的问题?:(
    不知道这样对不对。Decimal money ;
    String name;
    foreach( DataRow dr in DataTable.Rows )
    {
       name = convert.ToString( dr["name"] );
       foreach( DataRow datarow in DataTable.Rows )
       { 
          String text = convert.ToString( datarow["name"] );
          if( text == name )
         {
          money += convert.ToDecimal( dr["money"] );
          }
    }这只是个思路
      

  9.   

    to:maotin(liu)
    谢谢你的提供的思路,很有用呢。
    我就是想要实现, 在程序中 不用数据库,真接在内存中创建一个类似于表的东东,
    然后,再对这个表可以像对数据库一样来操作,并得到结果集。
    主要是希望能对它进行分类查询的操作,有sum(), min() max() avg() count()
      

  10.   

    DataTable 对象的 Select 方法返回一组与指定条件匹配的 DataRow 对象。Select 采用筛选表达式、排序表达式和 DataViewRowState 的可选参数。筛选表达式根据 DataColumn 值(例如 LastName = 'Smith'。排序表达式遵循用于为列排序的标准 SQL 约定,例如 LastName ASC, FirstName ASC。有关编写表达式的规则,请参阅 DataColumn 类的 Expression 属性。提示 如果您将对 DataTable 的 Select 方法执行多次调用,可通过先为 DataTable 创建 DataView 来提高性能。创建 DataView 会为表中的行编制索引。然后,Select 方法会使用该索引,这样将显著缩短生成查询结果的时间。有关为 DataTable 创建 DataView 的信息,请参阅创建和使用 DataView。
    在Expression表达式中支持下列聚合类型:Sum(求和)Avg(平均)Min(最小值)Max(最大值)Count(计数)StDev(统计标准偏差)Var(统计方差)。使用DataTable的Select方法好像无法实现选择某些列进行输入,最好用DataView
    获取与排序顺序中的筛选器以及指定的状态相匹配的所有 DataRow 对象的数组。
    public DataRow[] Select(string filterExpression,string sort,DataViewRowState recordStates);
    参数
    filterExpression 
    要用来筛选行的条件。 
    sort 
    一个字符串,它指定列和排序方向。 
    recordStates 
    DataViewRowState 值之一。 
      

  11.   

    好像有一个函数可以实现:
    dataset.Table[0].Compute();
                     ~~~~
    你可看看Msdn,
    这个应该可以实现你要得
      

  12.   

    好像有一个函数可以实现:
    dataset.Table[0].Compute();
                     ~~~~
    你可看看Msdn,
    这个应该可以实现你要得
      

  13.   

    private void ComputeBySalesSalesID(DataSet myDataSet){
        // Presumes a DataTable named "Orders" that has a column named "Total."
        DataTable myTable;
        myTable = myDataSet.Tables["Orders"];
        // Declare an object variable.
        object objSum;
        objSum = myTable.Compute("Sum(Total)", "EmpID = 5");
     }