2010-07-09 39 views
2

我有一個數據表,我想用公司名稱過濾此表。但它給了這個錯誤:「語法錯誤'操作員'後缺少操作。's'操作符後缺少opperand

我的代碼是這樣的。

DataRow[] rowList = resultDt.Select(string.Format(" [{0}] = '{1}'", resultDt.Columns["Company"], "Dyn's")); 

可能是什麼問題?

回答

5

問題是「Dyn's」。你可以使用\「而不是」出現問題

+0

非常感謝它的工作... – emrahe 2010-07-09 08:04:02

+0

我認爲你可以寫@ @ Dyn's「 – Jonathan 2010-07-09 09:20:46

7

它在名稱中的撇號,你需要逃避它:

DataRow[] rowList = resultDt.Select(string.Format(" [{0}] = '{1}'", resultDt.Columns["Company"], "Dyn\'s")) 

的問題是它正在取代{1}等生成的字符串看起來像'Dyn's',逃脫它可以讓你'Dyn\'s'這應該沒問題。

4
Dyn's 

你需要躲避撇號:

Dyn\'s 
2

嘗試逃脫「:

"Dyn\'s" 
1

您能夠使用LINQ到數據表呢?我一直認爲DataTable.Select()是一種容易出錯的方式,正是出於這種原因。

通過DataTableExtensions.AsEnumerable()方法(或更簡單地使用強類型數據集,IIRC)使用LINQ查詢對象(有效)是更好的IMO。無可否認,您將無法從DataTable執行的任何內存索引中受益,但我懷疑在大多數情況下,這些索引是無關緊要的。