Subsonic 3,SimpleRepository,SQL Server:如何查找具有空字段的行?

3
我可以使用Subsonic的Find<T>方法来搜索包含“null”值的字段的行。为了讨论方便,假设我有一个名为“Visit”的C#类,其中包含可为空的DateTime字段“SynchronizedOn”,并且假设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"条件吗?

1个回答

1

您可以使用:

var visits = myRepository.All<Visit>().Where(x => x.SynchronizedOn == null).ToList();

你的建议改进了我的linq查询,但没有使用Find<T>方法。那么我应该理解Find<T>方法无法检查null吗? - desautelsj

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接