【发布时间】:2011-04-03 01:10:50
【问题描述】:
很抱歉,如果以前有人问过这个问题,但我查看了相关问题,但找不到与我的情况有关的任何内容。
我有一个看起来像这样的查询。
var tempFoo = "";
var foo = tempFoo != "" ? tempFoo : null;
var result = Entities.Where(x => x.Bar == foo);
Bar 是一个 string 和一个可为空的 varchar
问题是当foo是null时LINQ to SQL生成的SQL是:
([t0].[Bar] = @p0)
应该在哪里:
([t0].[Bar] IS NULL)
如果我在表达式 LINQ to SQL 中将foo 替换为null,则使用正确的IS NULL 语法。然而,有时foo 不为空,所以我必须使用一个变量。
那么当foo 是null 和= 当foo 不是null 时,我怎样才能让LINQ to SQL 使用IS NULL?
PS:奇怪的变量赋值的原因是因为tempFoo 引用了一个命名的正则表达式捕获。如果捕获为空,则值为"",因此我必须检查空值并分配null。
谢谢!
【问题讨论】:
标签: c# linq linq-to-sql