检查LINQ查询中的布尔值是否为ISNULL



如何在LINQ查询中转换此SQL语句?

ISNULL(IsBlocked,0) = 0

IsBlocked是表Persons中的一列。

我想我有两个解决方案。一个用于INT或SMALLINT数据类型,另一个用于数据库中的BIT数据类型。
如果你的IsBlocked列在SQL Server中是BIT TYPE,那么你可以使用下面给出的代码。

 //This Class Represent as your Table Schema
public class PersonTableOne
{
    public int PersonID { get; set; }
    public string Name { get; set; }
    public bool? IsBlocked { get; set; }
}
void TestMethod1()
{
        List<PersonTableOne> personItems = new List<PersonTableOne>();
        personItems.Add(new PersonTableOne() { PersonID = 1, Name= "A" ,IsBlocked=null});
        personItems.Add(new PersonTableOne() { PersonID = 2, Name = "B", IsBlocked = true });
        personItems.Add(new PersonTableOne() { PersonID = 2, Name = "C", IsBlocked = false });
        var answare = from m in personItems
                      where (m.IsBlocked ?? false) == false
                      select m;
}

注意:Class是表的表示形式,而List是表的行。
如果你的IsBlocked Column是INT/SMALLINT TYPE在SQL Server中,那么你可以下面给出的代码。

 public class PersonTableTwo
 {
        public int PersonID { get; set; }
        public string Name { get; set; }
        public int? IsBlocked { get; set; }
 }
 void TestMethod2()
 {
        List<PersonTableTwo> personItems = new List<PersonTableTwo>();
        personItems.Add(new PersonTableTwo() { PersonID = 1, Name = "A", IsBlocked = null });
        personItems.Add(new PersonTableTwo() { PersonID = 2, Name = "B", IsBlocked = 1 });
        personItems.Add(new PersonTableTwo() { PersonID = 2, Name = "C", IsBlocked = 0 });
        var answare = from m in personItems
                      where (m.IsBlocked ?? 0) == 0
                      select m;
  }

你可以这样做

var result = from a.IsBlocked in db.Persons where a.IsBlocked == null 
select new { IsBlocked = false}; 

您可以将字段转换为字符串并检查是否为空。

String.IsNullOrEmpty(IsBlocked.ToString()) //this is going to be true if IsBlocked = null

相关内容

  • 没有找到相关文章

最新更新