如何从其他数据行中选择datarow? Datarow有[id,姓名,姓名,电话,电子邮件,状态] 我需要使用[id,name]或[id,name,phone]
获取datarowforeach (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;
}
}
答案 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)];
}
请注意,可以通过缓存已过滤的数据表来优化此功能。