Удаление повторяющихся элементов в ArrayList - C# (184301)

Узнай цену своей работы

Формулировка задачи:

Есть метод в котором открывается файл и далее происходит запись столбцов (но это не важно)
public ArrayList getTableArray()
        {
            ArrayList tmpTableArray = new ArrayList(); //Таблица со значениями
            countColumn = 0;
            OpenFileDialog ofd = new OpenFileDialog();
            ofd.Filter = "Text files (*.txt, *.log)|*.txt;*.log|All files (*.*)|*.*";
            try
            {
                path = @"C:\Users\Nikita\Desktop\SuperProg\20150115_124458_BaF2_1850V_25mV_2us_tyv_6db_Cs137_PED.txt"; //Путь
 
                StreamReader sr = new StreamReader(path);
                // По строчное чтение
                while (!sr.EndOfStream)
                {
                    string[] tmp = sr.ReadLine().Split('    ');
                    if (countColumn < tmp.Length) countColumn = tmp.Length; //Ищем строку с наибольшем колличеством столбцов
                    tmpTableArray.Add(tmp);
                }
                sr.Close();
                return tmpTableArray;
            }
            catch
            {
                throw;
            }
Далее происходит передача в другой ArrayList для отрисовки по выбору столбца гистограммы
private void panel1_Paint(object sender, PaintEventArgs e)
        {
            Graphics gr = this.CreateGraphics();
            gr = panel1.CreateGraphics();
 
            ArrayList tableArray; //Таблица со значениями
 
            tableArray = getTableArray(); //Таблица со значениями
 
            int tmp_i = 0;
 
            if (comboBox1.SelectedItem != null && comboBox1.SelectedItem.ToString() != "")
            {
                richTextBox1.Clear();
                
                selectColumn = int.Parse(comboBox1.SelectedItem.ToString()) - 1; //Выбранный столбец (канал)
                foreach (string[] item in tableArray)
                {
                    if (comboBox1.SelectedItem.ToString() == null) break;
                    if (selectColumn+1 > item.Length) break;
                    //gr.DrawLine(new Pen(Color.Black), tmp_i + 16, 550, tmp_i + 16, int.Parse(item[selectColumn]));
                    //textBox1.Text += item[selectColumn];
                    tmp_i++;
                   
                    //richTextBox1.Text += mas;
                    List<int> ag = new List<int> { int.Parse(item[selectColumn]) };
                    ag = ag.Distinct().ToList();
                    IEnumerable<int> disting = ag.Distinct();
                    foreach(int ags in disting)
                    {
                        richTextBox1.Text += ags + "\t\n";
                    }
                }
            }
        }
Проблема заключается в том что мне необходимо из полученного столбца чисел от item[selectColumn] удалить все не повторяющиеся числа, что я и попытался реализовать через

Distinct

но по моему говнокоду мне выводятся теже самые числа, без обработки

Решение задачи: «Удаление повторяющихся элементов в ArrayList»

textual
Листинг программы
 private void panel1_Paint(object sender, PaintEventArgs e)
        {
            Graphics gr = e.Graphics;
            ArrayList tableArray = getTableArray(); //Таблица со значениями
 
            if (comboBox1.SelectedItem != null && comboBox1.SelectedItem.ToString() != "")
            {
                richTextBox1.Clear();
 
                selectColumn = int.Parse(comboBox1.SelectedItem.ToString()) - 1; //Выбранный столбец (канал)
                List<int> ag = new List<int>(tableArray.Count);
                foreach (string[] item in tableArray)
                {
                    if (selectColumn < item.Length)
                        ag.Add(int.Parse(item[selectColumn]));
                }
                foreach (int ags in ag.Distinct())
                {
                    richTextBox1.Text += ags + "\t\n";
                }
            }
        }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4 из 5
Похожие ответы