c# - 尝试通过在c#中的函数中传递单个值来返回多个值
问题描述
我正在尝试从传递参数并将其存储在变量中的函数返回多个值ZDO_S
在变量ZDO_S
中,我试图存储两个值,我将通过传递从数据库中获取的单个值 'row["TVM_LS_NO"].ToString()' 函数获得两个值
var ZDO_S = getDo(row["TVM_LS_NO"].ToString());
这是方法:
private static (string TVD_LS_NO, string TVD_INV_NO) getDo(string DoNo)
{
try
{
using (OracleConnection con = new OracleConnection(ConfigurationManager.ConnectionStrings["Oracle_To_Sql.Properties.Settings.Setting"].ToString()))
{
string query = "select SUBSTR(TVD_DO_ITEM_NO,'1','10') from T_VEHICLE_DTL1 where TVD_LS_NO=:TVD_LS_NO";
OracleCommand myCommand = new OracleCommand(query, con);
DataTable dt = new DataTable();
OracleDataAdapter da = new OracleDataAdapter(myCommand);
da.SelectCommand = new OracleCommand(query, con);
da.Fill(dt);
foreach (DataRow row in dt.Rows)
{
string TVD_LS_NO = row["TVD_LS_NO"].ToString();
string TVD_INV_NO = row["TVD_INV_NO"].ToString();
}
return (TVD_LS_NO, TVD_INV_NO);
}
}
catch (Exception ex)
{
throw;
}
}
应返回预期值并将其存储在 ZDO_S 变量中。
实际出现错误“无法将 void 分配给隐式类型变量”
var ZDO_S=getDo(row["TVM_LS_NO"].ToString());
标识符预计在
private static (string TVD_LS_NO, string TVD_INV_NO) getDo(string DoNo)
由于 'Program.getDo(String) 返回 void ,return 关键字必须后跟对象表达式
return (TVD_LS_NO, TVD_INV_NO);
解决方案
我对 C# 不是很熟悉,但是如果你想在一个 return 语句中返回多个值,唯一的方法通常是一个数组或一个对象。在您的情况下,数组将是最简单的。
- 返回类型定义看起来不像是数组返回类型,试试
private static string[] getDo() {...
return 语句本身看起来不像数组,请尝试将值作为数组返回
您在 foreach 循环内定义变量,这通常会使它们在循环外无法访问。尝试在循环外定义变量并在循环中使用它们。
我不知道这是否是有效的 C#,但类似这样:
private static String[] getDo(string DoNo)
{
try
{
using (OracleConnection con = new OracleConnection(ConfigurationManager.ConnectionStrings["Oracle_To_Sql.Properties.Settings.Setting"].ToString()))
{
String[] toReturn = new String[2];
string TVD_LS_NO, TVD_INV_NO;
string query = "select SUBSTR(TVD_DO_ITEM_NO,'1','10') from T_VEHICLE_DTL1 where TVD_LS_NO=:TVD_LS_NO";
OracleCommand myCommand = new OracleCommand(query, con);
DataTable dt = new DataTable();
OracleDataAdapter da = new OracleDataAdapter(myCommand);
da.SelectCommand = new OracleCommand(query, con);
da.Fill(dt);
foreach (DataRow row in dt.Rows)
{
TVD_LS_NO = row["TVD_LS_NO"].ToString();
TVD_INV_NO = row["TVD_INV_NO"].ToString();
}
toReturn[0] = TVD_LS_NO;
toReturn[1] = TVD_INV_NO;
return toReturn;
}
}
catch (Exception ex)
{
throw;
}
}
不确定这是否是最好的答案,但我希望它能将您推向正确的方向。
推荐阅读
- node.js - app.get 不是 express.js 中的函数
- jsf - 如何使用primefaces中的选择制作分组数据表?
- javascript - 使用画布 globalAlpha 淡化
- c# - 一个或多个实体的验证失败。请参阅“EntityValidationErrors”属性以获取更多详细信息,请帮助我
- php - MySQL 从 pdo lastInsertID 获取 0
- java - Java HashMap:将桶实现更改为线性探测方法
- regex - Bash - 匹配正则表达式的多行数(可能是oneliner?)
- python - Pygame 全屏模式故障
- heroku - Google OAuth2:错误 401 - invalid_client
- vuejs2 - 如何避免vue组件重绘?