C# 如何从c中的ReadFirstOrDefaultAsync中的多个变量返回值
这是我的方法。我想返回变量的值并将其分配给模型 如何从变量item1和item2返回值C# 如何从c中的ReadFirstOrDefaultAsync中的多个变量返回值,c#,model-view-controller,dapper,C#,Model View Controller,Dapper,这是我的方法。我想返回变量的值并将其分配给模型 如何从变量item1和item2返回值 public async Task <(int, int)> GetCount(int CustId, string userId) { _log.Info($"Enter- GetCount"); const string query = @" Select count(*) from Products
public async Task <(int, int)> GetCount(int CustId, string userId)
{
_log.Info($"Enter- GetCount");
const string query = @" Select count(*) from Products
Select count(*) from Units";
using (IDbConnection myConnection =
_getConnection.GetConnection(GetConnectionStringFromDict(userId)))
{
_log.Info($"Exit- GetCount");
using (var multi = await myConnection.QueryMultipleAsync(query, new { CustId
}).ConfigureAwait(false))
{
var item1 = multi.ReadFirstOrDefaultAsync<int>();
var item2 = multi.ReadFirstOrDefaultAsync<int>();
}
}
using (IDbConnection myConnection =
_getConnection.GetConnection(GetConnectionStringFromDict(userId)))
{
_log.Info($"Exit- GetCount");
return (await myConnection.QueryAsync<(int, int)>(query, new { CustId
}).ConfigureAwait(false)).FirstOrDefault();
}
}
可以使用元组从函数调用返回多个项
public async Task<Tuple<int, int>> GetCount(int CustId, string userId) {
...
return new Tuple<int, int>(item1, item2);
}
参考:只需将ValueTuple放在括号中,即可返回它们 静态int,int测试 { INTA=0,b=1; 返回a、b; } 使用ReadFirstOrDefaultAsync将返回两次产品计数 您需要以集合的形式读取结果,集合可以转换为元组:
public async Task <(int, int)> GetCount(int CustId, string userId)
{
_log.Info($"Enter- GetCount");
const string query = @" Select count(*) from Products
Select count(*) from Units";
using (IDbConnection myConnection = _getConnection
.GetConnection(GetConnectionStringFromDict(userId)))
{
_log.Info($"Exit- GetCount");
using (var multi = await myConnection.QueryMultipleAsync(query, new { CustId })
.ConfigureAwait(false))
{
var items = await multi.ReadAsync<int>();
return (items.First(), items.Last());
}
}
}
如果要将item1和item2作为元组返回,可以使用returnitem1和item2。不过,目前还不清楚在这种情况下,您现有的报税表会发生什么变化!无关:您似乎没有在查询中使用CustId?是吗?从可读性的角度来看:是的,您可以返回一个元组。但我实际上建议返回一个ResultClass或Struct,或者从最近开始:Record,这样您就可以将属性命名为ProductScont和UnitScont。。。“但这是相当固执己见的。@Fildor:我错过了基于custID的添加,但我不知道如何从item1和item1返回值。”item2@SuvarnaS张贴你尝试过的东西,以及让你觉得自己运气不佳的东西。不幸的是,我的读心设备的电池今天没电了,所以你必须做艰苦的工作,并告诉我出了什么问题:这会给我一个错误,说不能隐式转换类型Systm.TupleThen你混淆了tuple和task:P它应该是task而不是tuple。我没有混淆。。。我添加了Jason提供的内容。我收到了错误。很抱歉Suvarna,我更新了答案。这至少可以在我的电脑上编译。我试过,但没有luck@SuvarnaS运气不足以形容失败。你凭什么认为自己运气不好?编译器错误?运行时异常?错误的结果?我在这里得到两个变量的值。但不知道如何返回值。var item=multi.ReadFirstOrDefaultAsync;var item1=multi.ReadFirstOrDefaultAsync@但不知道如何返回值。这是答案的一部分:归还物品。首先,物品。最后;你到底有什么不明白的?