c# - 如何在 C# 中创建泛型方法以返回多个列表
问题描述
我创建了一个返回单个列表的通用方法。但我需要传递多个列表,它将使用实体框架在 mvc 中返回多个列表结果集。
public void ExecuteList<T>(out List<T> obj, string sql, params object[] parameters) where T : class
{
using (var db = _context)
{
var cmd = db.Database.Connection.CreateCommand();
cmd.CommandText = sql;
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddRange(parameters);
try
{
db.Database.Connection.Open();
using (var reder = cmd.ExecuteReader())
{
obj = ((IObjectContextAdapter)db).ObjectContext.Translate<T>(reder).ToList();
}
}
finally
{
db.Database.Connection.Close();
cmd.Dispose();
}
}
}
当我在控制器中调用此方法时,它会给我一个列表。
public ActionResult Index()
{
List<SqlParameter> parameterList = new List<SqlParameter>();
parameterList.Add(new SqlParameter("@pageNo", 1));
parameterList.Add(new SqlParameter("@pageSize", 5));
SqlParameter[] parameters = parameterList.ToArray();
List<PostModel> PostModel = new List<PostModel>();
Uow.ExecuteList<PostModel>(out PostModel, "[dbo].[sp_getdata]", parameters);
return View();
}
但我需要传递多个列表,它会给我多个列表结果。
List<SqlParameter> parameterList = new List<SqlParameter>();
parameterList.Add(new SqlParameter("@pageNo", 1));
parameterList.Add(new SqlParameter("@pageSize", 5));
SqlParameter[] parameters = parameterList.ToArray();
List<PostModel> PostModel = new List<PostModel>();
List<Tag> Tag = new List<Tag>();
Uow.ExecuteList<PostModel,Tag>(out PostModel, out Tag, "[dbo].[sp_Getdata]", parameters);
请帮助我如何完成上述要求。
解决方案
您可以使用值元组来做到这一点。
(ReturnType1 returnName1, ReturnType2 returnName2) Foo<T>(argument...)
例如
(T postModel, U tag) ExecuteList<T, U>(argument...)
{
// the code
return (postModel, tag);
}
泛型方法可以使用某种类型,就像代码 using 一样<T, U>
,T 和 U 是两种类型。
推荐阅读
- php - 发送 PHP 邮件,以便邮件在收件箱中作为一个对话堆叠或模仿回复
- git - 在 git 中从 LFS 跟踪的子文件夹中检出一个文件夹
- amazon-web-services - 如何通过 R Studio 从 S3 存储桶同步和读取文件 - 使用 Putty SSH 连接到本地主机?
- javascript - 我可以在 React 功能组件中添加异步功能吗
- cassandra - Cassandra PER PARTITION LIMIT not working 在开发中心抛出错误
- hadoop - 如何让 Impala v2.5 设置选项 live_progress 和 live_summary 工作
- swift - 如何为我的 30 个文本字段输入转义小键盘/键盘?
- apache-spark - Spark:如何使用 Avro 模式创建数据集?
- azure-sql-server - 将 bacpac 文件导入本地 SQL Server
- git - PowerShell Core 不能很好地与 jq 配合使用