2016-09-08 2 views
0

У меня есть класс с именем cPointВставка данных по заданному индексу в списке класса C#

public class cPoint 
{ 
    public string point; 
    public string time; 
    public double xPoint; 
    public double yPoint; 
    public string csv; 
    public string barcode; 
    public double meanX; 
    public double meanY; 
} 

и глобальный список sorted. Я разобрать файл XML затем добавить данные в:

cPoint Point = new cPoint(); 
Point.time = endTime; 
Point.point = location; 
Point.xPoint = Convert.ToDouble(xOffset); 
Point.yPoint = Convert.ToDouble(yOffset); 
Point.barcode = panelSerNo; 
sorted.Sort((x, y) => x.point.CompareTo(y.point)); 
Point.csv = endTime + "," + panelSerNo + "," + location + "," + xOffset + "," + yOffset; 
sorted.Add(Point); 

В конце концов я сделать некоторые математике вычисления с списка, а затем добавить эти результаты в sorted.csv на основе пользовательского ввода:

if (aoiFlag == true) 
{ 
    sorted.Last(n => n.point == name).csv += "," + sixSigx + "," + sixSigy; 
} 

Печатается CSV файл: enter image description here

Теперь то, что я хотел бы сделать, когда sorted полностью заполнен и устанавливается пользовательский ввод, перед записью в файл вернуться в первые 4 элементов отсортированного списка и добавить данные в csv (sorted.csv?) часть каждого класса в этих 4 элементах. Моя цель - добавить дополнительный текст (текст в красном) к выходу. Я сделал некоторое исследование о том, как это сделать, но потому, что sorted - это список классов, это отбрасывает меня, как использовать что-то вроде List.Insert. У меня есть предыдущий опыт C, но это мой первый проект C# (ООП - это другой мир!). Любая помощь будет великолепна, потому что я новичок.

Приветствия

+0

Так что вы хотите обновить 'csv' свойство первых 4-х элементов? – user3185569

+0

Да, я просто подумал, что добавлю некоторую справочную информацию, чтобы избежать путаницы –

+2

Вы можете получить доступ к элементу по индексу. Вы можете сделать 'sorted [0] .csv + =" USL (um) "+", "+" 70 ";' Я действительно не знаю, где вы читаете эти 8 значений. Но простой цикл от 0 до 3 будет работать как шарм. – user3185569

ответ

2

Как я писал в комментариях выше, вам нужно сделать простой цикл для доступа к элементам внутри списка (ли элементы класса или примитивные типы):

for(int i =0; i < 4; i++) 
{ 
    // Change this static data to read it from somewhere 
    // like += results[i] + "," + pass[i]; 
    sorted[i].csv += "USL(um)" + "," + "70"; 
} 

Или если у вас есть статические данные, либо поместить их в массив строк или написать 4 дубликаты строк (не рекомендуется):

sorted[0].csv += "USL(um)" + "," + "70"; 
sorted[1].csv += /* next line data */; 
sorted[2].csv += /* next line data */; 
sorted[3].csv += /* next line data */; 
1

Чтобы изменить любой элемент в списке, вы можете использовать его как массив C, в

for (int i=0; i<4; i++) { 
    sorted[i].csv += ",USL(um),70" 
} 

Чтобы вставить новый элемент в конкретный индекс списка используйте Insert(index, value) метод. Этот метод вставляет новый элемент в позицию индекса и сдвигает правый остаток элементов.

sorted.Insert(i, myPoint); 
0

Вы можете использовать метод ElementAt LINQ для доступа к определенному элементу в списке.

var firstElement = sorted.ElementAt(0); 
firstElement.Result = "USL (µm)"; 

var secondElement = sorted.ElementAt(1); 
// ... 
Смежные вопросы