&安培;&安培;不能应用于bool和int getvalueordefault

时间:2013-07-23 09:39:53

标签: linq

我正在尝试使用GetValueOrDefault而不是null而不等于1(下面的代码将解释这一点)。

然而我得到了错误:

  

&安培;&安培;不能应用于bool和int

我在这里看不到错误:

string[] arrItems = new string[] { 
    "Laptop", "Workstation", "Mobile","Monitor", "Other Peripheral", 
    "Home Printer", "Home Router", "Removable Device" };

var tblequipments = 
    from d in db.tblEquipments.Include(t => t.User).Include(t => t.ChangeLog)
    where (arrItems.Contains(d.AssetType)) &&
            (d.Development.GetValueOrDefault(0)) && 
            (d.Deleted == null || d.Deleted != 1 ) && 
            (d.Stock == null || d.Stock != 1 ) && 
            (d.DecommissionDate == Convert.ToDateTime("1900-01-01") || 
             d.DecommissionDate == Convert.ToDateTime("0001-01-01") || 
             d.DecommissionDate == null)  
    select d;

2 个答案:

答案 0 :(得分:7)

您应该使用HasValue代替GetValueOrDefault,因为前者返回bool而后者返回(在本例中)int

d.Development.GetValueOrDefault(0)

应该是:

d.Development.HasValue

答案 1 :(得分:0)

那是因为在.NET中bool和int是完全不同的东西。 int永远不会是false或true,它只是一个int。 您可以执行(d.Development.GetValueOrDefault(0) != 0)之类的操作,使其成为布尔值。