为什么即使条件为true,我仍会从sql查询中获取空结果?

时间:2018-10-25 07:35:34

标签: c# sql

我有一个名为 'generation_unit_mobile' 的表: enter image description here

现在,我正在尝试根据以下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。我的代码怎么了?

3 个答案:

答案 0 :(得分:0)

将mobileno转换为字符串,以便   db获取以下查询

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

答案 1 :(得分:0)

计算结果:

如果计数为零,则返回0否则为1


ydl = youtube_dl.YoutubeDL({
    'outtmpl': '%(title)s%(ext)s',
})
with ydl:
    ydl.download('https://www.youtube.com/watch?v=XA6bS8TyN10')

答案 2 :(得分:0)

此答案不会解决您遗漏的结果,只是提示,您可以简化代码。

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

似乎:

  • 您永远不会使用返回的记录(如果有),因此Any()似乎更好
  • 您正在执行网络操作,异步执行将使您的系统更具可扩展性