2016-07-01 3 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 텍스트 상자가 다음 공백을 포함하지 않는 경우

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

name2.Text은 포함 할 수 공백? – Steve

답변

1

당신이 한 줄

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

를 사용하여 소수점 값의 목록을 도달 할 수있다 :

이미처럼 될 수있는 방법 무언가를 썼다 물론 Min 값을 얻는 것은 조금 다른 단계 일뿐입니다.

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

y o 10 진수 형식 메서드를 사용하여 값을 추출하는 것이 맞다고 생각하여 소수 부분으로 목록 상자 항목의 서식을 지정했습니다. 당신의 NAME2 텍스트 상자에 공백이 다음 코드를 직접 분할 방식에 의해 반환되는 두 번째 항목을 사용하지만 스플릿 (Split)에 의해 반환 된 배열의 마지막 방법을 사용해서는 안 포함 경우

var numbers = listBox.Items 
        .Cast<string>() 
        .Select(obj => decimal.Parse(obj.Split(' ') 
        .Last(),NumberStyles.Currency, CultureInfo.CurrentCulture)); 
관련 문제