如何从文本框C#中获取LINQ中的输入

时间:2014-01-08 16:33:10

标签: c# linq

我有一个数据表dt_Customers,其中包含一些客户信息。在此数据表中,我想选择用户将使用文本框输入的一系列邮政编码。

我正在使用以下代码:

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'

4 个答案:

答案 0 :(得分:1)

Zip[0]是一个字符,txtBox_ZIP_From.Text是一个字符串。在给定的硬编码示例中,您将比较角色和角色。

答案 1 :(得分: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))

如果textBox包含单个char

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))

答案 2 :(得分: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]

答案 3 :(得分: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;