我正在尝试使用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;
答案 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)
之类的操作,使其成为布尔值。