/// <param name="ds">要封装的ds</param>
    /// <param name="strwhere">条件</param>
    /// <param name="orderby">排序</param>
    /// <returns>一个数组 满足条件的datarow</returns>
    private DataRow[] GetRows(DataSet ds,string strwhere,string orderby,int EndNumber)
    {
        DataRow[] rows = ds.Tables[0].Select(strwhere, orderby);//得到满足条件的行
        //将行放到一个ds中
        int endNum = EndNumber;
       // rows.Length <= EndNumber ? endNum = rows.Length : endNum = EndNumber;//得到最后的行
        if (rows.Length<EndNumber)
        {
            endNum = rows.Length;
        }
       
        rows.Length = endNum;//截断dr
        //动态的去掉多余的长度
        return rows;
    } 发现报错  因为 rows.length属性是只读的。 现在就是想把多余的行数去掉 不想用for来便利 有什么好的方法吗?

解决方案 »

  1.   

    没有什么好办法,只能用for,去remove.
      

  2.   

    不可能改变的,你不理解只读的含义吗?什么是多余的行?你想删掉rows里面的行吗?
      

  3.   


     private DataRow[] GetRows(DataSet ds,string strwhere,string orderby,int EndNumber)
        {
            DataRow[] rows = ds.Tables[0].Select(strwhere, orderby);//得到满足条件的行
            //将行放到一个ds中
            int endNum = EndNumber;
           // rows.Length <= EndNumber ? endNum = rows.Length : endNum = EndNumber;//得到最后的行
            if (rows.Length<EndNumber)
            {
                endNum = rows.Length;
            }
           rows =rows.Take(endNum).ToArray();
            //rows.Length = endNum;//截断dr
            //动态的去掉多余的长度
            return rows;
        } 
      

  4.   

     DATAROW 就没有take()的这个方法。
      

  5.   

    安装.net framework 3.5了么