Удаление повторяющихся элементов в ArrayList - C# (184301)
Формулировка задачи:
Есть метод в котором открывается файл и далее происходит запись столбцов (но это не важно)
Далее происходит передача в другой ArrayList для отрисовки по выбору столбца гистограммы
Проблема заключается в том что мне необходимо из полученного столбца чисел от item[selectColumn] удалить все не повторяющиеся числа, что я и попытался реализовать через
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;
}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";
}
}
}
}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";
}
}
}