在列表中搜索<>

时间:2013-03-20 05:01:56

标签: c#-4.0 bindingsource

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

任何解决方案对我而言。因为当我试图找到字符串值时,这适用于我。

2 个答案:

答案 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.TryParseDouble.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();
     }
}

试试这个