我想在List<>中找到值但我没有得到整数值。这是我的代码,我想在List
中找到值private void txtnapsaserach_TextChanged(object sender, EventArgs e)
{
try
{
//decimal find = decimal.Parse(txtnapsaserach.Text);
if (decimal.Parse(txtnapsaserach.Text) > 0)
{
List<NapsaTable> _napsatabs = this.napsaTableBindingSource.List as List<NapsaTable>;
this.napsaTableBindingSource.DataSource =
_napsatabs.Where(p =>p.NapsaRate.Equals(txtnapsaserach.Text)).ToList();
}
}
catch (Exception Ex)
{
}
}
任何解决方案对我而言。因为当我试图找到字符串值时,这适用于我。
答案 0 :(得分:1)
我想在List&lt;&gt;中找到值但我没有得到整数值。
您的p.NapsaRate
是整数类型或浮点数,(可能是十进制)将txtnapsaserach.Text
转换为十进制值,然后在where子句中进行比较。
decimal rate = 0;
if(!decimal.TryParse(txtnapsaserach.Text), out rate)
{
//Invalid number in textbox
}
this.napsaTableBindingSource.DataSource =
_napsatabs.Where(p =>p.NapsaRate == rate)).ToList();
如果p.NapsaRate
的类型为double或float,则可以使用Double.TryParse
或Double.Parse
等对其进行相应的解析
您没有收到任何错误的原因是您使用object.Equals
方法将十进制值与字符串进行比较。您应始终使用==
进行值类型的相等比较。
答案 1 :(得分:1)
private void txtnapsaserach_TextChanged(object sender, EventArgs e)
{
float value;
if (!float.TryParse(txtnapsaserach.Text, out value))
return; // return if text cannot be parsed as float number
if (value > 0)
{
var napsatabs = napsaTableBindingSource.List as List<NapsaTable>;
napsaTableBindingSource.DataSource =
napsatabs.Where(p =>p.NapsaRate == value).ToList();
}
}
试试这个