C#:从datarow中选择datarow

时间:2014-07-02 06:49:50

标签: c# select datatable datarow

如何从其他数据行中选择datarow? Datarow有[id,姓名,姓名,电话,电子邮件,状态] 我需要使用[id,name]或[id,name,phone]

获取datarow
foreach (DataRow row in dt.Rows)
        {
//row have columns [id,name,surname,phone,email,status]
            switch ((Int32)row["status"])
            {
                case 1:
                    someFunction(row.[SELECT id,name]);  //need here datarow with colums id,name
                    break;
                case 2:
                    someFunction(row.[SELECT id,name,phone]);  //need here datarow with colums id,name,phone
                    break;
            }
        }

3 个答案:

答案 0 :(得分:0)

你应该像这样传递

someFunction(row["id"] + "," row["name"]);

你的某些函数应该像这样使用字符串

Public Foo someFunction(string str)
{
  //Here split str with comma (,)
}

答案 1 :(得分:0)

要选择数据表中的行,您可以使用DataTable.Select方法。

//select rows having status = 1
DataRow[] rows1 = dt.Select("status = 1");
//select rows having status = 2
DataRow[] rows2 = dt.Select("status = 2");

或者您可以使用重载函数来处理不同的行。

foreach (DataRow row in dt.Rows)
{
     int iRowStatus = Convert.ToInt32(row["status"]);
     int iId = Convert.ToInt32(row["id"]);
     string sName = row["name"].ToString();
     string sPhone = row["phone"].ToString();

     switch (iRowStatus)
     {
        case 1:
           someFunction(iId,sName);  
           break;
        case 2:
           someFunction(iId,sName, sPhone);  
           break;
      }
} 

private void someFunction (int iId, string sName)
{
     //do something
}


private void someFunction (int iId, string sName, string sPhone)
{
     //do something
}

答案 2 :(得分:0)

someFunction应定义为:

DataRow someFunction(DataRow row,String columns){
return row.Table.DefaultView.ToTable(false,columns).Rows[row.Table.Rows.IndexOf(row)];
}

请注意,可以通过缓存已过滤的数据表来优化此功能。