C# C:从datarow中选择datarow

C# C:从datarow中选择datarow,c#,select,datatable,datarow,C#,Select,Datatable,Datarow,如何从另一个datarow中选择datarow? Datarow具有[id、姓名、姓氏、电话、电子邮件、状态] 我需要获取带有[id,name]或[id,name,phone]的数据行 foreach (DataRow row in dt.Rows) { //row have columns [id,name,surname,phone,email,status] switch ((Int32)row["status"]) {

如何从另一个datarow中选择datarow? Datarow具有[id、姓名、姓氏、电话、电子邮件、状态] 我需要获取带有[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;
            }
        }

你应该这样通过

someFunction(row["id"] + "," row["name"]);
Public Foo someFunction(string str)
{
  //Here split str with comma (,)
}
你的函数应该是这样的字符串

someFunction(row["id"] + "," row["name"]);
Public Foo someFunction(string str)
{
  //Here split str with comma (,)
}

要选择datatable中的行,可以使用方法

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

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

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

什么?很抱歉请再说一遍。很难准确地理解你在问什么,这个问题非常接近于你能为我写这段代码吗?这通常是不允许的。请修改你的问题以便更清楚你的意思。你不需要为我写代码。问题很简单:如何从列id为、名称为、电话为的数据行中获取列id为、名称为的数据行。。。如果哪里没有办法做到这一点-这将是答案!没有办法获取数据行?函数获取数据行。。。或者我需要创建新的DataRow并添加[id、name和etc.]?这就像在整数中询问整数。DataRow有列,无法按列删除或选择?在您的情况下,逻辑保留在两个位置。首先是switch语句,然后是函数someFunction中的其他语句。我的解决办法是把逻辑放在一个地方。i、 在您的函数中。我将所有数据行数据发送到函数。在函数中,按行[状态]创建开关。Thnx的答案…您可以发送数据行作为参数。然后您必须像上面那样从行中获取值。最好使用重载函数。当您传递DataRow时,您必须再次查找状态。检查DataTable。选择选项您必须选择行。DataRow是DataTable的一部分。数据表中存在列。因此,无法从datarow中删除或筛选列。