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;
}
}
你应该像这样传递
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)];
}
注意,这个函数可以通过缓存过滤后的数据表来优化。