Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用LINQ从SQL存储过程返回单个值_C#_Linq - Fatal编程技术网

C# 使用LINQ从SQL存储过程返回单个值

C# 使用LINQ从SQL存储过程返回单个值,c#,linq,C#,Linq,我有一个存储过程,它返回我想使用LINQ返回的十进制值。我使用以下方法使用ViewModel返回多个值,但从未返回一个值,并且诚实地努力在线查找: var CompanyIdParameter = new SqlParameter("CompanyId", companyId); departmentListVM = db.Database.SqlQuery<DepartmentViewModel>("sp_SELECT_Department_Hierarchy @CompanyId

我有一个存储过程,它返回我想使用LINQ返回的十进制值。我使用以下方法使用ViewModel返回多个值,但从未返回一个值,并且诚实地努力在线查找:

var CompanyIdParameter = new SqlParameter("CompanyId", companyId);
departmentListVM = db.Database.SqlQuery<DepartmentViewModel>("sp_SELECT_Department_Hierarchy @CompanyId", CompanyIdParameter)
    .Select(x=> new DepartmentViewModel()
    {
        pkiDepartmentId = x.pkiDepartmentId,
        DepartmentName = x.DepartmentName,
        ParentDepartmentId = x.ParentDepartmentId,
        ParentDepartmentName = x.ParentDepartmentName,
        fkiCompanyId = x.fkiCompanyId,
        isLastDept = x.isLastDept
    }).ToList();
var CompanyIdParameter=新的SqlParameter(“CompanyId”,CompanyId);
departmentListVM=db.Database.SqlQuery(“sp\u SELECT\u Department\u Hierarchy@CompanyId”,CompanyId参数)
.Select(x=>newdepartmentviewmodel()
{
pkiDepartmentId=x.pkiDepartmentId,
DepartmentName=x.DepartmentName,
ParentDepartmentId=x.ParentDepartmentId,
ParentDepartmentName=x.ParentDepartmentName,
fkiCompanyId=x.fkiCompanyId,
isLastDept=x.isLastDept
}).ToList();
我不能这样做吗:

var IdeaIdParameter = new SqlParameter("IdeaId", ideaId);
var SessionIdParameter = new SqlParameter("SessionId", sessionId);
var CriteriaIdParameter = new SqlParameter("CriteriaId", item.fkiJudgingCriteriaId);
decimal result = db.Database.SqlQuery<decimal>("sp_SELECT_Department_Hierarchy @IdeaId, @SessionId, @CriteriaId", IdeaIdParameter, SessionIdParameter, CriteriaIdParameter)
                        .Select(x => x.value);
var IdeaIdParameter=新的SqlParameter(“IdeaId”,IdeaId);
var SessionIdParameter=新的SqlParameter(“SessionId”,SessionId);
var CriteriadParameter=新的SqlParameter(“CriteriaId”,item.fkiJudgingCriteriaId);
decimal result=db.Database.SqlQuery(“sp_SELECT_Department_Hierarchy@IdeaId、@SessionId、@CriteriaId”、IdeaIdParameter、sessiondparameter、CriteriaIdParameter)
.选择(x=>x.value);
是我把事情弄得太复杂了还是有更好的办法?

怎么样

var value = db.Database.SqlQuery<decimal>("sp_SELECT_Department_Hierarchy @IdeaId, @SessionId, @CriteriaId", IdeaIdParameter, SessionIdParameter, CriteriaIdParameter)
                  .SingleOrDefault();
var value=db.Database.SqlQuery(“sp_SELECT_Department_Hierarchy@IdeaId、@SessionId、@CriteriaId)、IdeaId参数、SessionIdParameter、CriteriaIdParameter)
.SingleOrDefault();
怎么样

var value = db.Database.SqlQuery<decimal>("sp_SELECT_Department_Hierarchy @IdeaId, @SessionId, @CriteriaId", IdeaIdParameter, SessionIdParameter, CriteriaIdParameter)
                  .SingleOrDefault();
var value=db.Database.SqlQuery(“sp_SELECT_Department_Hierarchy@IdeaId、@SessionId、@CriteriaId)、IdeaId参数、SessionIdParameter、CriteriaIdParameter)
.SingleOrDefault();

我们以前在ADO.NET中有Command.ExecuteScalar,它只返回第一个单元格值。存储的进程是否返回1值?使用SingleOrDefault(),或Single(),如果您知道将始终返回值。我们以前在ADO.NET中使用Command.ExecuteScalar,它只返回第一个单元格值。存储的过程是否返回1个值?使用SingleOrDefault(),或者Single(),如果你知道总会有一个返回值的话。太简单了……我几乎尴尬了。谢谢Antoine,你做到了。我只能在4分钟内接受答案。@AxleWack很高兴能帮你这么简单……我几乎感到尴尬。谢谢Antoine,你做到了。我只能在4分钟内接受答案。@AxleWack很乐意帮助你