2
假设您有一个可以为空的varchar列的表。当您尝试过滤表,你可以使用(pFilter是参数):处理LinqToSql中可空字符串列的最佳方法是什么?
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();
但这不起作用。显然,值为null的字符串是...非空?
然而,什么做的工作是这样的代码:
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();
解决方法并没有使我确信,这就是为什么我的问题是:什么是应对LinqToSql可为空字符串列的最佳方式?
任何想法为什么它不工作?我的意思是一个技术解释。 – 2011-05-20 20:44:25
@Marco我更新了答案。基本上,LINQ to SQL提供程序如何处理'=='。 – Equiso 2011-05-20 21:18:22
太棒了,现在它很有意义:) – 2011-05-20 22:24:44