2016-07-01 7 views
1

難しい質問があります。特定の文字の後にlistBox項目の値を取得する

私はいくつかの項目を持つListBoxを持っています。すべてのアイテムは、string、double、doubleのような構造を持っています。コード内

listBox.Items.Add(name2.Text + " " + 
        Annuitätenrechner.zmErg.ToString("0.00") + "€" + " " + 
        Annuitätenrechner.zgErg.ToString("0.00") + "€"); 

私は、他の項目の最後のダブルでのアイテムの(zgErg)最後のダブルを比較し、その後すべての項目の最小値を取得したいのですが。 NAME2テキストボックスにスペースが含まれていない場合、あなたは

var numbers = listBox.Items 
        .Cast<string>() 
        .Select(obj => decimal.Parse(obj.Split(' ')[2], 
            NumberStyles.Currency, CultureInfo.CurrentCulture)); 

単線​​を使用して、10進数の値のリストに達する可能性がある

private void bCompare_Click(object sender, RoutedEventArgs e) 
{ 
    // string ext = str.Substring(0, str.LastIndexOf("#") + 1); 

    var numbers = listBox.Items.Cast<object>().Select(obj => Convert.ToInt32(obj)); 

    foreach (int obj in numbers) 
    { 

    } 

    int min = numbers.Min(); 
} 
+0

を最終メソッドを使用するべきではありませんスペース? – Steve

答えて

1

はすでに、それは次のように可能性がどのように何かを書きましたもちろん最小値を得ることは別の小さなステップです

decimal minValue = listBox.Items 
         .Cast<string>() 
         .Select(obj => decimal.Parse(obj.Split(' ')[2], 
            NumberStyles.Currency, CultureInfo.CurrentCulture)) 
         .Min(); 

注意してください小数点以下の型のメソッドを使用して値を抽出するのが正しいと思いますので、リストボックスの項目を小数部でフォーマットしました。

あなたの名前2テキストボックスにスペースが含まれている場合、コードはname2.Textが含まれている可能性があり、直接スプリットメソッドによって返される2番目のアイテムを使用しますが、スプリット

で返される配列に
var numbers = listBox.Items 
        .Cast<string>() 
        .Select(obj => decimal.Parse(obj.Split(' ') 
        .Last(),NumberStyles.Currency, CultureInfo.CurrentCulture)); 
関連する問題