作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
假设您有一个包含可为空 varchar 列的表。当您尝试过滤表时,您将使用(pFilter 是参数):
var filter = pFilter;
var dataContext = new DBDataContext();
var result = dataContext.MyTable.Where(x=>x.MyColumn == filter).ToList();
var filter = pFilter != "[Nulls]" ? pFilter : null;
var dataContext = new DBDataContext();
var result = dataContext.MyTable.Where(x=>x.MyColumn == filter).ToList();
var filter = pFilter != "[Nulls]" ? pFilter : null;
var dataContext = new DBDataContext();
var result = dataContext.MyTable.Where(x=>x.MyColumn == filter || (filter == null && x.MyColumn == null)).ToList();
最佳答案
使用 String.Equals
这将使 LINQ 在生成的 SQL 查询上适本地处理 null
var result = dataContext.MyTable
.Where(x => String.Equals(x.MyColumn, filter))
.ToList();
==
LINQ 将为一般情况生成查询
WHERE [column] = @parameter
但是在 SQL NULL 与 NULL 不匹配时,测试 NULL 的正确方法是
[column] IS NULL
.
String.Equals
LINQ 有足够的信息在每种情况下将方法翻译成合适的句子,这意味着:
WHERE ([column] IS NOT NULL) AND ([column] = @parameter)
WHERE [column] IS NULL
关于string - 在 Linq To Sql 中处理可为空字符串列的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6075979/
我是一名优秀的程序员,十分优秀!