AxleWack
AxleWack

Reputation: 1911

Returning single value from SQL Stored Procedure using LINQ

I have a stored procedure that returns a decimal value that I want to return using LINQ. I have used the following to return multiple values an using a ViewModel, but never to return a single value, and honestly struggling to find something online:

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();

Can I not do something like this:

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);

Am I making it too complicated or is there a better way?

Upvotes: 0

Views: 481

Answers (1)

Antoine V
Antoine V

Reputation: 7204

How about

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

Upvotes: 2

Related Questions