1

null の代わりに 1 に等しくないものを使用しようとしてGetValueOrDefaultいます (以下のコードでこれについて説明します)。

それでもエラーが発生します:

&& は 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

前者は a を返し、後者は (この場合) を返すため、HasValue代わりに を使用する必要があります。GetValueOrDefaultboolint

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 に答える