2

我想在 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)
    {
    }
}

对我来说任何解决方案。因为当我尝试查找字符串值时,这对我有用。

4

2 回答 2

1

我想在 List<> 中找到值,但我没有得到整数值。

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.TryParseorDouble.Parse等​​相应地解析它们

您没有收到任何错误的原因是您正在使用object.Equals将十进制值与字符串进行比较的方法。您应该始终==用于值类型的相等比较。

于 2013-03-20T05:03:48.820 回答
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();
     }
}

试试这个

于 2013-03-20T05:04:29.423 回答