c# - Linq 选择字符串值 "not equals"忽略 DB 空值

标签 c# sql linq entity-framework

这里有些奇怪。通过 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/

相关文章:

c# - LINQ to SQL 和自关联表

c# - 如何使用 Lambda/LINQ 从字典中启动一个类对象,由 Newtonsoft.Json 解析?

c# - Linq中有没有一种方法可以根据不同的条件应用不同的计算

c# - Guid 应包含 32 位数字和 4 个破折号 (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)。错误?

c# - 获取具有不同键的重复值的枚举变量的值

c# - java 的 -verbose :gc command line option 的 .NET 等价物是什么

mysql - SQL ORDER BY 想法

sql - 使用 SUM 和 Group by 计算百分比

C#:将年份列表构建为整数

c# - 'enumType' 和 'TEnum' 之间的区别