0

我在的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的支票。

有沒有一種方法可以做到這一點,而不需要所有的{}。我是 想到使用?:運營商,但我認爲這些只適用於設置一個值,而不是像我使用的回報。

+2

不,請立即使用它。 – dursk

+1

你必須確保它們是相同的類型,而不僅僅是返回對象 – DevEstacion

+0

它被稱爲三元運算符。在SQL中,它就像一個'結束'語句的情況。 – RadioSpace

回答

3

你完全可以做你想做的事情。

return (rc > 0) ? Ok(rc) : BadRequest(); 

雖然有些人可能會認爲使用if/else更清潔。你不需要花括號,你可以這樣做:

if (rc > 0) 
    return Ok(rc); 
else 
    return BadRequest(); 
0

正如其他人所說,你一定可以返回三元運算符的結果。需要注意的一點是類型轉換,因爲它需要評估爲單個返回類型。如果你試圖在特定條件下返回null,那麼這真的只會出現,在這種情況下,你可以將null轉換爲正確的類型。

也就是說,將結果賦給變量然後返回變量是個好主意。閱讀起來更清潔一點,更重要的是,更易於調試。 (基本上每次我調試其中一個函數時,我最終都會將其更改爲變量賦值,所以我可以在離開函數之前看到該值。)

相關問題