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