这里有些奇怪。通过 Entity Framework 访问的数据表有一个字段是可为空的字符串/varchar。
当您尝试使用 Linq 选择事物以获得不等于给定值的项目时,即
var thingsToRun = rep.Things.Where(t => t.Status != "Running");
您得到的是所有状态不是“正在运行”的事物的列表,那些状态为空的事物除外。
换句话说,如果您有状态为“Running”、“NotRunning”和 NULL 的三件事,上述查询只会返回一个状态为“NotRunning”的项目。
我认为这与 C# null 和 DB null 之间的不匹配有关。但这似乎很奇怪。有没有简单的解决方法?
编辑:感谢您的回答。仍然好奇为什么会发生这种情况?
最佳答案
在查询中包含 null
var thingsToRun = rep.Things.Where(t => t.Status == null || t.Status != "Running");
关于c# - Linq 选择字符串值 "not equals"忽略 DB 空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22684554/