2014-01-08 76 views
-1

我有一個數據表dt_Customers其中包含一些客戶信息。在這個數據表中,我想選擇用戶使用文本框輸入的一系列郵政編碼。如何從文本框輸入LINQ C#

我使用下面的代碼:

IEnumerable<DataRow> enumerableDataRowCollection = 
    from company in dt_Customers.AsEnumerable() 
    let zip = company.Field<string>("ZIP") 
    where (!string.IsNullOrEmpty(zip) && (zip[0] >= "'" + txtBox_ZIP_From.Text + "'" && zip[0] <= "'" + txtBox_ZIP_to.Text + "'")) 

    select company; 

但我得到一個錯誤

Operator '>=' cannot be applied to operands of type 'char' and 'string' 

上面的代碼工作正常,當我硬編碼了一些值,比如:

zip[0] >= '2' && zip[0] <= '6' 

回答

1
IEnumerable<DataRow> enumerableDataRowCollection = 
    from company in dt_Customers.AsEnumerable() 
    let zip = company.Field<string>("ZIP") 
    where (!string.IsNullOrEmpty(zip) && (zip >= txtBox_ZIP_From.Text && zip <= txtBox_ZIP_to.Text)) 

如果txtBox contient一個辛格運河焦炭

var cCriterFrom = txtBox_ZIP_From.Text.Text[0]; 
var cCriterTo = txtBox_ZIP_to.Text.Text[0]; 

IEnumerable<DataRow> enumerableDataRowCollection = 
    from company in dt_Customers.AsEnumerable() 
    let zip = company.Field<string>("ZIP") 
    where (!string.IsNullOrEmpty(zip) && (zip[0] >= cCriterFrom && zip[0] <= cCriterTo)) 
+0

再次感謝的人:) – Kamran

+1

'拉鍊[0 ]> = cCriter && zip [0] <= cCriter'相當於'zip [0] == cCriter' –

+0

@pswg,正確。是我粗心大意。 – dovid

1

Zip[0]是一個字符,而txtBox_ZIP_From.Text是一個字符串。在給定的硬編碼示例中,您正在比較角色和角色。

1

的問題是,zipstring,所以zip[n]char。如果要比較字符串,試試這個:

string.Compare(zip, txtBox_ZIP_From.Text) >= 0 && 
string.Compare(zip, txtBox_ZIP_To.Text) <= 0 

但是,它可能會更好zip和文本框中輸入轉換爲數字,並加以比較的方式。

或者,如果你只是想第一個字符,每個字符串比較,你可以使用這個:

zip[0] >= txtBox_ZIP_From.Text[0] && zip[0] <= txtBox_ZIP_to.Text[0] 
+0

我想從ZIP代碼中選擇第一個數字,爲​​什麼我使用char數據類型,而我正在使用ZIP [0]。 – Kamran

+0

@Kami你有什麼理由爲什麼你要做'''「+ txtBox_ZIP_From.Text +」'「'? –

0

試試這個:

IEnumerable<DataRow> enumerableDataRowCollection = 
    from company in dt_Customers.AsEnumerable() 
    let zip = company.Field<string>("ZIP") 
    where (!string.IsNullOrEmpty(zip) && (zip.CompareTo(txtBox_ZIP_From.Text) >= 0) && (zip.CompareTo(txtBox_ZIP_to.Text) <=0))  
    select company;