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 <>で値を見つけたいのですが、整数値を取得していません。

Yourp.NapsaRateは整数型または浮動小数点数(おそらく10進数)のいずれかです。を10進数値に 変換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.Equals10進値を文字列と比較する方法を使用しているためです。==値型の等価比較には常に使用する必要があります。

于 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 に答える