3

我如何使用 Subsonic 的Find<T>方法来搜索包含“null”值的字段的行。为了便于讨论,假设我有一个名为“Visit”的 ac# 类,其中包含一个名为“SynchronizedOn”的可为空的 DateTime 字段,还假设 Subsonic 迁移已创建相应的“Visits”表和“SynchronizedOn”字段.

如果我要自己编写 SQL 查询,我会编写如下内容:

SELECT * FROM Visits WHERE SynchronizedOn IS NULL

当我使用以下代码时:

var visits = myRepository.Find<Visit>(x => x.SynchronizedOn == null);

Subsonic 将其转换为以下 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”条件?

4

1 回答 1

1

您可以使用:

var visits = myRepository.All<Visit>().Where(x => x.SynchronizedOn == null).ToList();
于 2009-08-10T04:15:49.947 回答