c#:从datarow中选择datarow

本文关键字:datarow 选择 | 更新日期: 2023-09-27 18:11:15

如何从另一个数据ow中选择数据ow?数据包含[id,姓名,姓氏,电话,电子邮件,状态]我需要得到datarow与[id,name]或[id,name,phone]

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

c#:从datarow中选择datarow

你应该像这样传递

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

你的some函数应该接受这样的字符串

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

对于选择数据表中的行,可以使用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
}

someFunction应该定义为:

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

注意,这个函数可以通过缓存过滤后的数据表来优化。