2014-07-23 60 views
2

我希望能夠使用字符串評估數據集。在SQL語句中,我將使用數據集提取數據,如果數據集匹配字符串,我想要做一些事情。我無法弄清楚這樣做的語法。如何使用字符串評估數據集ASP.NET C#

這裏是我的代碼:

var sql = new SQL_Statements(); 
var stringSql = "select type from po where po_num=" + stringPO_NUM; 
const string stringLumber = "Lumber"; 

var sql_ds = sql.SelectFromDB(stringSql); 

if (sql_ds.Tables[0].Rows.ToString() == stringLumber) 
{ 
    //Lets do something. 
} 

數據集從表中拉字木材。可以請一些人告訴我如何做到這一點?

回答

1

您在DataRowCollection上致電ToString而不是返回的單元格值。

當你的查詢只排在返回的一個單元,您可以通過直接索引DataRow訪問的第一個單元格:

if (sql_ds.Tables[0].Rows[0][0].ToString() == stringLumber) 

Rows[0][0]第一0是行索引,第二個是列索引。

+0

這並不正確,當它爲真時返回false – nate

+0

是'po的選擇類型的結果,其中po_num =「+ stringPO_NUM'絕對是」Lumber「。是否存在區分大小寫問題或可能? – petelids

+0

良好的調用由於某種原因,在木材後面有空格 – nate

0

試試這個。這將迭代遍歷每行以查看它是否與您的字符串匹配,然後如果該行執行某些操作,則執行一些操作。所以你可能需要更多的代碼來完成它。

foreach (DataTable table in sql_ds.Tables) 
{ 
    foreach (DataRow row in table.Rows) 
    { 
     if (row.Field["ROW_NAME"].ToString() == stringLumber) 
      { 
       //Lets do something. 
      } 
    } 
} 
+0

請記住,您選擇的上述答案只會評估第一行。這將評估所有行。 –

0

現在的問題是您正在調用.ToString行。這可能會返回你不擅長的行的數據類型。

您需要選擇特定的行,然後選擇行內的特定列值。如果只有一行返回,您可以嘗試:

sql_ds.Tables[0].Rows[0][0].ToString() == stringLumber 

這將獲得您的集合中的第一行,然後是第一列。你提到結果中可能有空格,所以如果需要刪除字符串開始或結束處的空白,可以添加.Trim()。

+0

無法解析列 – nate

+0

@nate編輯我的答案。 – Vulcronos