1

我正在尝试使用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;
4

2 回答 2

7

您应该使用HasValue而不是GetValueOrDefault因为前者返回 abool而后者返回(在这种情况下) an int

d.Development.GetValueOrDefault(0)

应该:

d.Development.HasValue
于 2013-07-23T09:44:47.763 回答
0

那是因为在 .NET 中 bool 和 int 是真正不同的东西。int 永远不会是 false 或 true,它只是一个 int。你也许可以做一些事情,比如(d.Development.GetValueOrDefault(0) != 0)让它成为布尔值。

于 2013-07-23T09:44:40.700 回答