在类列表C#中的特定索引处插入数据

时间:2016-09-08 07:18:35

标签: c# list sorting csv

我有一个名为cPoint

的班级
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#项目(OOP是一个不同的世界!)。任何帮助都会很棒,因为我是新手。

干杯

3 个答案:

答案 0 :(得分:3)

要更改列表中的任何元素,您可以像C的数组一样使用它,

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

要使用Insert(index, value)方法将新元素插入到列表的特定索引中。此方法在索引位置插入一个新元素并向右移动元素。

sorted.Insert(i, myPoint);

答案 1 :(得分:2)

正如我在上面的评论中发布的那样,你需要做一个简单的for循环来访问列表中的元素(无论是类元素还是基本类型):

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 */;

答案 2 :(得分:0)

您可以使用ElementAt LINQ方法访问列表中的某个元素。

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

var secondElement = sorted.ElementAt(1);
// ...