如何将null作为值传递给从linq到sql的字符串(varchar)列?我正在尝试查询表中某些行对于列(例如,Col_A)具有NULL而其他行具有“NotNull”(字符串)作为值。
string s = null;
var query = (from r in context.Table1
where r.Col_A == s
select r).ToList();
返回0行。但如果我将s设置为“NotNull”,我会按预期返回行。
任何指针都会有所帮助。
答案 0 :(得分:4)
有一个恼人的错误,在某些情况下,以下内容可能会有所不同:
where x.Foo == null
VS
where x.Foo == s
执行时s
恰好是null
。基本上,在某些用例中,它可能会错误地结束使用:
WHERE [x].[Foo] = @p3
@p3
null
值,但在ANSI兼容SQL中显然不合理。
如果您正在进行参数值可能为null
的测试,我建议您使用 { {1}}在C#中。我确实有一些代码可以使用表达式访问者在事后应用它,但对于特殊情况null
来说更容易。所以:
null
答案 1 :(得分:0)