我使用此代碼爲什麼空值不返回在申請的時候!=在LINQ
var items2 = from item in context.Images
where item.Reported != true
select item;
但不是在「報道」欄目爲何返回空值?
我使用此代碼爲什麼空值不返回在申請的時候!=在LINQ
var items2 = from item in context.Images
where item.Reported != true
select item;
但不是在「報道」欄目爲何返回空值?
true
或false
與null
的值不同。如果同時需要進行再回到你將要查詢改成這樣:
var items2 = from item in context.Images
where item.Reported != true || item.Reported == null
select item;
它應該是或者而不是和。 –
這是一個布爾操作,你不能只是去'where!item.Reported'嗎? –
在C#中,'null!= true'的結果爲'true' – Andomar
你可以嘗試使用Object.Equals
爲你想到,像這樣的效果:
var items2 = from item in context.Images
where !Equals(item.Reported, true)
select item;
它應該像你已經描述過,返回false
和null
條目。
如果'item.Reported'是一個值類型,並且如果它不是 – Andomar
實體框架,翻譯查詢到SQL時,產生類似的代碼
select * from images
where reported <> true
在SQL中的任何操作上的空值使用返回FALSE(null <> true
過),這就是爲什麼你沒有得到與報道的空圖像您的結果集中的值。
+1,SQL就不會知道'true',所以我猜它會被轉換爲'reported <> 1'。這確實解釋了行爲! – Andomar
因爲null不等於true ... –
您應指定item.Reported類型和您正在使用的LINQ提供程序。 – jkoreska
我相信你需要item.Reported.Value!= true,如果你在你的模式中允許有空值,那麼Reported是空的。所以你有一個hasValue和值實際訪問實體真假值。 – Bearcat9425