可空布爾我有一個Person
類Sex
屬性爲空如何使用。如果條件在LINQ to NHibernate的
public class Person
{
public bool? Sex {get; set;}
}
我有一個由linq查詢到NHibernate。
var q = SessionInstance.Query<Person>();
if (dto.Sex != null)
q = q.Where(p => p.Sex == dto.Sex);
return q.ToList();
現在,如果dto.Sex的值等於true
,結果是正確的。
但如果dto.Sex的值等於false
結果是不正確的,因爲結果是包含人,性是虛假或無效。
我檢查這個查詢分析器:
select * from Person_Person person0_
where case
when person0_.Sex = 1 then 1
else 0
end = case
when 0 /* @p0 */ = 1 then 1
else 0
end
爲什麼?
我檢查這個例子監守我沒有意識到的那的問題,我可以說,他確實存在一些HYM解決方法:。凡(X => x.IsActive.HasValue && x.IsActive ==假) – 2012-03-27 21:14:16
@Adam:我KHOW,但我期待爲更好的解決方案 – Ehsan 2012-03-28 09:13:57
你在評論中寫道:「我的基礎問題是生成查詢的類型」,能否詳細說明這一點。正如我所見,所描述的問題只存在於bool類型中。 – 2012-03-29 17:55:27