簡體   English   中英

為什么即使條件為true,我仍會從sql查詢中獲取空結果?

[英]Why I am getting null result from a sql query even though the condition is true?

我有一個名為“ generation_unit_mobile”的表: 在此處輸入圖片說明

現在,我嘗試根據以下where子句獲取結果:

public int MobileExistToAnotherGenerationUnit(string mobileNo, long generationUnitId)
{
    var result = _mobileRepository.Table
        .Where(gum => gum.mobileno == mobileNo && gum.generation_unit_id != generationUnitId)
        .Select(s => new Generation_unit_mobile
        {
            id = s.id
        })
       .FirstOrDefault();

    return result == null ? 0 : 1;
}

從以上這段代碼中,MobileExistToAnotherGenerationUnit應該為generation_unit_id = 2和mobileno = 01673050495返回1 但是對於這個mobileno和generation_unit_id = 2,它返回0。奇怪的是,對於generation_unit_id = 1和mobileno = 01673050495,它也返回0。我的代碼怎么了?

將mobileno轉換為字符串,以便Db進入以下查詢

         Select * from your_table where 
          generation_unit_id=2 and 
          Mobileno='01673040595'  --single quote essential

計算結果:

如果計數為零,則返回0,否則返回1

public int MobileExistToAnotherGenerationUnit(string mobileNo, long generationUnitId)
{
    int result = _mobileRepository.Table
    .Where(gum => gum.mobileno == mobileNo && gum.generation_unit_id != 
     generationUnitId)
    .Select(s => new Generation_unit_mobile
    {
        id = s.id
    }).ToList().Count;

    return result == 0 ? 0 : 1;
}

這個答案不會解決您遺漏的結果,只是提示您可以簡化代碼。

public Task<bool> MobileExistToAnotherGenerationUnit(string mobileNo, long generationUnitId) =>
    _mobileRepository.Table
      .AnyAsync(gum => gum.mobileno == mobileNo && gum.generation_unit_id != generationUnitId);

看起來:

  • 您永遠不會使用返回的記錄(如果有的話),因此Any()似乎更好
  • 您正在執行網絡操作,異步執行將使您的系統更具可擴展性

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM