0

我编写了一个 C# 代码来从csv文件中读取数据。数据格式如下:

2,3,4,5,6
4,2,4,5,6
4,5,6,3,2
5,3,5,6,3

读取它的代码是:

var lines = File.ReadLines("Data.csv");
var numbers = ProcessRawNumbers(lines); 

功能ProcessRawNumbers如下:

private static List<List<double>> ProcessRawNumbers(IEnumerable<string> lines)
    {
        var numbers = new List<List<double>>();
        /*System.Threading.Tasks.*/
        Parallel.ForEach(lines, line =>
        {
            lock (numbers)
            {
                numbers.Add(ProcessLine(line));
            }
        });
        return numbers;
    }

private static List<double> ProcessLine(string line)
    {
        var list = new List<double>();
        foreach (var s in line.Split(Separators, StringSplitOptions.RemoveEmptyEntries))
        {
            double i;
            if (Double.TryParse(s, out i))
            {
                list.Add(i);
            }
        }
        return list;
    }

我想对DataGridView. 如何做到这一点?

DataGridView我输入如下:

在此处输入图像描述

另外,是否可以动态更改列数?

4

1 回答 1

0

在 a 中输入的数据DataGridView存储在其行和单元格中。要提取数据,您必须手动迭代行和单元格:

public List<string[]> ExtractGridData(DataGridView grid)
{
    int numCols = grid.Columns.Count;
    List<string[]> list = new List<string[]>();
    foreach (DataGridViewRow row in grid.Rows)
    {
        if (row.IsNewRow) // skip the new row
            continue;
        string[] cellsData = new string[numCols];
        foreach (DataGridViewCell cell in row.Cells)
            if (cell.Value != null)
                cellsData[cell.ColumnIndex] = cell.Value.ToString();
        list.Add(cellsData);
    }

    return list;
}

如果要动态更改列,可以访问Columns网格的属性。例如,要添加一列,您可以编写:

dataGridView1.Columns.Add("NewColumn", "New Column");

另请注意,Parallel.ForEach在您的场景中使用没有优势,因为您必须顺序处理数据,并且通过 usinglock语句,您强制顺序处理。所以没有并行处理。

于 2013-03-09T06:48:40.330 回答