我有一个数据表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'
答案 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)
问题是zip
是string
,因此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;