DataView dv = new DataView();
                dv = objDS.Tables[0].DefaultView;
                //-------objDS.Table : process
                //-------  栏位:    proc   seq
                //-------  数据:     S01    2
                //-------  数据:     S02    10
                //-------  数据:     SFDA   5
                //-------- 数据:     S01    6
                //------目的: 通过知道 seq 的值得到对应的proc的值
                Int32 nRow = dv.Find("6");//不希望使用dv.sort ,因为这样得到的索引不是原来的顺序索引                string sProc = dv.Table.Rows[nRow]["proc"].ToString();问下该怎么做才能实现,
先谢谢了.

解决方案 »

  1.   

    DataTable有个select函数。
    DataRow[] rows = objDs.Tables[0].Select("seq = " + 6);
      

  2.   

    可是seq的值是唯一的,结果只会返回一个rowindex
    象你这样是不是拿出了多个rowindex
      

  3.   

    private void DemonstrateDataView()
    {
        // Create one DataTable with one column.
        DataTable table = new DataTable("table");
        DataColumn colItem = new DataColumn("item",
            Type.GetType("System.String"));
        table.Columns.Add(colItem);    // Add five items.
        DataRow NewRow;
        for(int i = 0; i <5; i++)
        {
            NewRow = table.NewRow();
            NewRow["item"] = "Item " + i;
            table.Rows.Add(NewRow);
        }
        // Change the values in the table.
        table.Rows[0]["item"]="cat";
        table.Rows[1]["item"] = "dog";
        table.AcceptChanges();
     
        // Create two DataView objects with the same table.
        DataView firstView = new DataView(table);
        DataView secondView = new DataView(table);
     
        // Print current table values.
        PrintTableOrView(table,"Current Values in Table");    // Set first DataView to show only modified 
        // versions of original rows.
        firstView.RowStateFilter=DataViewRowState.ModifiedOriginal;    // Print values.   
        PrintTableOrView(firstView,"First DataView: ModifiedOriginal");    // Add one New row to the second view.
        DataRowView rowView;
        rowView=secondView.AddNew();
        rowView["item"] = "fish";    // Set second DataView to show modified versions of 
        // current rows, or New rows.
        secondView.RowStateFilter=DataViewRowState.ModifiedCurrent 
            | DataViewRowState.Added;
        // Print modified and Added rows.
        PrintTableOrView(secondView, 
            "Second DataView: ModifiedCurrent | Added");
    }
     
    private void PrintTableOrView(DataTable table, string label)
    {
        // This function prints values in the table or DataView.
        Console.WriteLine("\n" + label);
        for(int i = 0; i<table.Rows.Count;i++)
        {
            Console.WriteLine("\table" + table.Rows[i]["item"]);
        }
        Console.WriteLine();
    }
     
    private void PrintTableOrView(DataView view, string label)
    {
     
        // This overload prints values in the table or DataView.
        Console.WriteLine("\n" + label);
        for(int i = 0; i<view.Count;i++)
        {
            Console.WriteLine("\table" + view[i]["item"]);
        }
        Console.WriteLine();
    }
      

  4.   

    个人认为这个应该比较好用:
    dv.RowFilter = "seq='6'";
    string strTmp=dv[0]["proc"].ToString();希望对你有帮助。
      

  5.   

    DataRow[] rows = objDs.Tables[0].Select("seq = 6");
    string   sProc   =   rows[0][ "proc "].ToString(); 
      

  6.   

    谢谢你,
    补充下,我最想拿到seq='6'的原本的索引顺序rowindex ,不定义 dv.sort
    因为后续作业,我需要rowindex值