2014-02-22 91 views
1
for (int i = 0; i < dtblAllDB.Rows.Count; i++) 
{     
     if ((table.Rows[i]["customer_id"].ToString() && table.Rows[i]["time"].ToString()) != (dtblAllDB.Rows[i]["customer_id"].ToString() && dtblAllDB.Rows[i]["time"].ToString())) 
     { 

     } 
} 

我需要比較兩個數據表列中的值比較兩個數據表中的值,但我得到的錯誤, 這裏表和dtblAllDB是數據表..在if語句

操作「& &」可以不適用於類型「串」和「字符串」的操作數

回答

1

&&操作數可以被應用到bool但不string,喲烏爾條件會像

for (int i = 0; i < dtblAllDB.Rows.Count; i++) 
{ 
    if (!(table.Rows[i]["customer_id"].ToString() == dtblAllDB.Rows[i]["customer_id"].ToString() 
    && table.Rows[i]["time"].ToString() == && dtblAllDB.Rows[i]["time"].ToString())) 
    { 
    } 
} 

雖然這並沒有太大的意義,因爲它會按行比較錶行和濾除行不同時匹配cutomer_idtime

如果你想比較兩個表,不管行的位置,那麼你需要兩個循環,如下所示。

for(int k = 0; k < table.Rows.Count; k++) 
{ 
    for (int i = 0; i < dtblAllDB.Rows.Count; i++) 
    { 
     if (!(table.Rows[k]["customer_id"].ToString() == dtblAllDB.Rows[i]["customer_id"].ToString() 
     && table.Rows[k]["time"].ToString() == && dtblAllDB.Rows[i]["time"].ToString())) 
     { 
     } 
    } 
} 
0

ToString()返回表示當前對象的字符串。使用

Convert.ToString(table.Rows[i]["customer_id"]) 

在每種情況下。並且還使用==比較字符串

0

您需要分別比較每個值。我認爲這是你想要做什麼:

if ((table.Rows[i]["customer_id"].ToString() != dtblAllDB.Rows[i]["customer_id"].ToString()) 
    && ((table.Rows[i]["time"].ToString() != dtblAllDB.Rows[i]["time"].ToString()) 
    && (table.Rows[i]["customer_id"].ToString() != dtblAllDB.Rows[i]["time"].ToString()) 
    && (table.Rows[i]["time"].ToString() != dtblAllDB.Rows[i]["customer_id"].ToString())) 
0

使用加號(+)來連接在C#中的兩個字符串

if ((table.Rows[i]["customer_id"].ToString() + table.Rows[i]["time"].ToString()) != (dtblAllDB.Rows[i]["customer_id"].ToString() + dtblAllDB.Rows[i]["time"].ToString())) 
    { } 

OR

if (table.Rows[i]["customer_id"].ToString() != dtblAllDB.Rows[i]["customer_id"].ToString() && table.Rows[i]["time"].ToString() != dtblAllDB.Rows[i]["time"].ToString()) 
    { }