如何通过c#mvc函数传递两个参数来调用存储过程

当我需要传递单个参数时,我可以轻松完成,如下所示:
public ProjectsModel GetProjectListBySearch(int projectId)
    {
        try
        {
            using (_context = new Exo_ADBEntities())
            {
                var getdetailprojectlist = _context.Database.sqlQuery<ProjectsModel>("exec dbo.[GetProjectListByID] @ProjectID",new sqlParameter("@ProjectID",projectId)).FirstOrDefault();
                return getdetailprojectlist;
            }

        }
        catch (Exception)
        {

            throw;
        }
    }

这很好用,但是当我尝试做同样的事情但传递两个参数时我发现语法错误称为无效参数请帮我做这个.使用两个参数时的代码如下

public List<ProjectsModel> GetProjectDetailsBySectorAndSubSector(int sectorid,int subsectorid)
    {
        try
        {
            using (_context = new Exo_ADBEntities())
            {
                var projectbysectorandsubsector = _context.Database.sqlQuery<ProjectsModel>("exec dbo.[GetProjectDetailsBySectorAndSubSector] @sectorId,@subSectorId",new sqlParameter("@sectorId,sectorid,subsectorid)).ToList();
                return projectbysectorandsubsector;
            }

        }
        catch (Exception)
        {

            throw;
        }
    }

解决方法

问题是您尝试将多个参数作为单个对象传递.

如果您使用look at the signature的Database.sqlQuery,您会看到:

public DbRawsqlQuery<TElement> sqlQuery<TElement>(
string sql,params Object[] parameters
)

这太基础了,但是,当你在C#函数中看到params时,它意味着“任意数量的参数”.这意味着您可以根据需要传递尽可能多的参数.所以,在你的情况下,它就像这样:

_context.Database.sqlQuery<ProjectsModel>(
  "exec dbo.[GetProjectDetailsBySectorAndSubSector] @sectorId,new sqlParameter("@sectorId",sectorid),new sqlParameter("@subSectorId",subsectorid)
).ToList()

请注意,当您找到params Object []时,您也可以传递一个数组而不是几个参数,即

_context.Database.sqlQuery<ProjectsModel>(
  "exec dbo.[GetProjectDetailsBySectorAndSubSector] @sectorId,new Object[] { new sqlParameter("@sectorId",subsectorid)}
).ToList()

根据代码的外观,这可能更方便.

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...