2012-07-07 39 views
0

比較字符串如果我有一個查詢從數據庫和C#

var query = from c in ds.Prices 
      select c; 
dataGridControl1.AutoCreateColumns = true; 
dataGridControl1.ItemsSource = query; 

數據網格顯示從表中的所有數據(`DS =新的DataSet())。但是當我添加條件時

var query = from c in ds.Prices 
      where c.idsticker.Equals("GOOG") 
      select c; 
dataGridControl1.AutoCreateColumns = true; 
dataGridControl1.ItemsSource = query; 

datagrid爲空。但在表格中存在價值(idsticker varchar(10)在sql server中)。當我比較int值(例如條件是where c.prices > 660)它正常工作。

出了什麼問題?

+0

您是否檢查過是否存在具有空idsticker的記錄?或者,「GOOG」的入口確實是「G00G」。 – 2012-07-07 00:24:36

+1

您可能有隱藏的角色或空間。對於測試,從數據庫中複製字段中的文本,使用GOOG。然後做你的代碼比較。另一種方法是使用SQL管理器,並執行一個簡單的查詢。 – 2012-07-07 00:31:50

+0

沒有這樣的記錄。所有記錄都來自.csv文件 – lapots 2012-07-07 00:32:02

回答

2

我所能想到的是對它應用一個Trim(),並且可能會使用ToUpper()來查看其中一個或兩個是否有區別。

var query = from c in ds.Prices 
      where c.idsticker.Trim().ToUpper().Equals("GOOG") 
      select c; 
dataGridControl1.AutoCreateColumns = true; 
dataGridControl1.ItemsSource = query; 

除此之外,請嘗試對數據庫使用SQL執行相同的查詢。

select * from prices where idsticker = 'GOOG' 
+0

。所以問題出在Trim – lapots 2012-07-07 00:31:16

+0

@ user1432980,不,修飾本身不是問題,也不是Chris提到的其他方法。看看這些功能至少在做什麼...... – walther 2012-07-07 00:51:32

+0

我的意思是問題是空格 – lapots 2012-07-07 12:06:57