C# 使用LINQ从SQL存储过程返回单个值
我有一个存储过程,它返回我想使用LINQ返回的十进制值。我使用以下方法使用ViewModel返回多个值,但从未返回一个值,并且诚实地努力在线查找: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
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很乐意帮助你