3
如何使用Subsonic的Find<T>
方法來搜索包含「null」值的字段的行。爲了討論,假設我有一個名爲「Visit」的ac#類,其中包含一個名爲「SynchronizedOn」的可爲空的DateTime字段,並且我們假設Subsonic遷移已創建相應的「Visits」表和「SynchronizedOn」字段。Subsonic 3,SimpleRepository,SQL Server:如何查找具有空字段的行?
如果我寫的SQL查詢我自己,我會寫這樣的:
SELECT * FROM Visits WHERE SynchronizedOn IS NULL
當我使用下面的代碼:
var visits = myRepository.Find<Visit>(x => x.SynchronizedOn == null);
亞音速把它變成下面的SQL查詢:
SELECT * FROM Visits WHERE SynchronizedOn == null
從不返回任何行。
我試着下面的代碼,但它拋出一個錯誤:
visits = repository.Find<Visit>(x => x.SynchronizedOn.HasValue);
我可以使用以下語法:
var query = from v in repository.All<Visit>()
where v.SynchronizedOn == null
orderby v.CreatedOn
select v;
visits = query.ToList<Visit>();
,但它不是漂亮的短,使用Find<T>
方法。
任何人都知道如何在Find<T>
方法中指定「SynchronizedOn IS NULL」條件?
你的建議是對我的LINQ查詢的改善,但不使用查找方法。我是否應該瞭解Find 方法無法檢查null? –
desautelsj
2009-08-11 15:06:20