我在WebAPI中有一个执行SQL的动作方法:
var sql = @"UPDATE UserTestQuestion
SET AnswerGridResponses = @AnswerGridResponses,
Answered = 1
WHERE UserTestQuestionId = @UserTestQuestionId
AND UserId = @UserId;";
var parameters = new SqlParameter[]
{
new SqlParameter("@CreatedBy", createdBy),
new SqlParameter("@AnswerGridResponses", answerGridResponses),
new SqlParameter("@TestQuestionId", testQuestionId)
};
var rc = await db.Database.ExecuteSqlCommandAsync(sql, parameters);
if (rc > 0)
{
return Ok(rc);
}
else
{
return BadRequest();
}
我的理解是ExecuteSqlCommandAsync
会返回一个数字
表示更改了多少行。所以我添加了rc > 0
的支票。
我是否可以在不需要所有{}
的情况下完成此操作。我曾是
考虑使用?
:
运算符,但我认为这些只适用于设置值,而不适用于我正在使用的返回值。
答案 0 :(得分:3)
你可以做你想做的事。
return (rc > 0) ? Ok(rc) : BadRequest();
虽然有些人可能认为使用if/else
更清洁。你不需要花括号,你可以这样做:
if (rc > 0)
return Ok(rc);
else
return BadRequest();
答案 1 :(得分:0)
正如其他人所说,你肯定可以返回三元运算符的结果。要注意的一件事是类型转换,因为它需要评估为单个返回类型。如果你试图在某种条件下返回null,那真的只会出现,在这种情况下你可以将null转换为正确的类型。
那就是说,将结果分配给变量然后返回变量是个好主意。它阅读起来更清晰,更重要的是,更容易调试。 (基本上每次我调试其中一个函数时,我最终都会将其更改为变量赋值,因此无论如何我都可以在离开函数之前看到该值。)