2017-06-18 10 views
0

は、私は数字の間に空白がありますtxtファイル内の番号を取得し、ソート・リストにしたいです。 しかし、私は読むのTXTからの番号と、それらを並べ替える - キャストエラー

'System.String []'のオブジェクトをキャストして 'System.IConvertible'にキャストできません。エラー

using (OpenFileDialog ofd = new OpenFileDialog() { Filter = "Text Dosyası(*.txt)|*.txt", ValidateNames = true, Multiselect = false }) 
{ 
    if (ofd.ShowDialog()==DialogResult.OK) 
    { 
     string[] lines = File.ReadAllLines(ofd.FileName); 
     List<Double> list = new List<Double>(); 

     foreach (string s in lines) 
     { 
      //int nmbr = 0; 
      lines = s.Split(new char[] { }, StringSplitOptions.RemoveEmptyEntries); 
      list.Add(Convert.ToDouble(lines)); 
      listfile.Items.Add((Convert.ToDouble(lines))); 

     } 

     list.Sort(); 
     foreach (Double x in list) 
     { 
      listBox1.Items.Add(x); 
     } 
+0

ダブルにトーリングする。 Select()で各要素をプロジェクトに変換し、AddRange()で追加します。 –

+0

あなたは私に多くのサンプルを与えるか、私のコード –

+0

@SilasHayriでそれを編集することができます - あなたは、あなたの質問にご入力のサンプルを提供していただけますか? – Enigmativity

答えて

0

はまず、あなたは間違っているforeach文の中にあなたlines変数を再割り当てされています。

第二に、あなたの代わりに値そのもののそれぞれの変換値の配列を変換しようとしています。

list = list.OrderByDescending(x => x).ToList(); 

あなたがソートされたリストを持っていたら、あなたは

foreach (Double x in list) 
{ 
    listBox1.Items.Add(x); 
} 
+0

はあなたが –

+0

感謝をたくさん私に多くのサンプルを与えるか、私のコードでそれを編集することができます:)私は順番に番号を作りたい、大きな数が最も少ない –

+0

@SilasHayriない問題にように最初に来るとことを、別のものを追加更新 –

0

あなたのリストボックスに移入することができますが、このようにそれを行うことができます:あなたが行うことができます降順で取得した値を注文する

foreach (string s in lines) 
{ 
    //int nmbr = 0; 
    var numbers = s.Split(new char[] { }, StringSplitOptions.RemoveEmptyEntries); 
    foreach(var number in numbers) 
    { 
     var convertedNumber = Convert.ToDouble(number); 
     list.Add(convertedNumber); 
     listfile.Items.Add(convertedNumber); 
    } 
} 

:あなたはのリストを変換することはできません

List<double> list = 
    File 
     .ReadAllLines(ofd.FileName) 
     .SelectMany(line => line.Split(' ')) 
     .Select(double.Parse) 
     .OrderBy(x => x) 
     .ToList(); 

foreach (double x in list) 
{ 
    listBox1.Items.Add(x); 
} 
関連する問題