c# - 将 List<string> 添加到 DataTable

标签 c# .net datatable

我创建了一个类库,我正在尝试从 List<string[]> 添加数据到 DataGridView。

字符串格式如下:

"Test, 1^Glucose^10/24/2013 10:00;Test, 2^BUN^10/25/2013 11:00;Test, 3^BUN^10/25/2013 11:00"

我正在从另一个程序传递字符串。然后我将其放入列表中,然后尝试将其添加到 DataTable但没有这样的运气。我创建了包含四列的 datagridview。

Selected - Checkbox

Patient Name - String

Order Name - String

Order Date - String

Reason - Combo Box

我收到一个错误:

the list is greater than the number of columns.

注意:在传递给这个程序之前,我可以随意制作字符串,所以如果我需要在传递给程序之前对字符串做些什么,请告诉我。有没有更简单的方法?

我只想显示数据,我会处理其余部分。

如有任何帮助,我们将不胜感激。

这是我的代码:

public partial class RenewOrders : Form
{
    public static string strMLMPatientData = string.Empty;

    public RenewOrders(string all_patient_data)
    {
        InitializeComponent();
        strMLMPatientData = "Test, 1^Glucose^10/24/2013 10:00;Test, 2^BUN^10/25/2013 11:00;Test, 3^BUN^10/25/2013 11:00"
    }

    private void RenewOrders_Load(object sender, EventArgs e)
    {    
        this.ConvertStringToList(strMLMPatientData);
    }

    private void ConvertStringToList(string strMLMPatientData)
    {
        var patient_list = strMLMPatientData.Split(';').Select(x => x.Split('^')).ToList();
        DataTable dtTable = ConvertListToDataTable(patient_list);
        dataGridView1.DataSource = dtTable;
    }

    // Convert to DataTable.
    static DataTable ConvertListToDataTable(List<string[]> patient_list)
    {
        // New table.
        DataTable dtTable = new DataTable();

        dtTable.Columns.Add("Name", typeof(string));
        dtTable.Columns.Add("Order Name", typeof(string));
        dtTable.Columns.Add("Order Date/Time", typeof(string));
        
        foreach (var row in patient_list)
        {
            table.Rows.Add(row);
        }

        return dtTable;
    }
}

最佳答案

首先需要适当吐出字符串,得到字符串数组列表。像这样:

var patient_list = new List<string[]>(strMLMPatientData.Split(';').Select(x => x.Split(',')));

甚至更好:

var patient_list = strMLMPatientData.Split(';').Select(x => x.Split(',')).ToList();

为此您需要 Linq,但您明白了。

然后您需要向数据表中添加列。当没有列时,你不能向它添加行..

在你的函数中尝试这样的事情

//add columns appropriately
DataTable table = new DataTable();
table.Columns.Add("Name", typeof(string));
table.Columns.Add("Order", typeof(string));
table.Columns.Add("Date", typeof(string));
foreach (var row in patient_list)
    table.Rows.Add(row);

return table;

查看示例 here .就目前而言,您的逗号分隔输入字符串似乎与您的数据表列结构不匹配。你需要解决它。但我希望你知道该走哪条路。

关于c# - 将 List<string> 添加到 DataTable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17127058/

相关文章:

c# - 如何确定何时显示工具提示?

c# - 在 C# 中将数据 View 复制到数据表的最简单方法?

vb.net - VB : How to bind a DataTable to a DataGridView?

c# - 当鼠标在 datagridview 行中时显示每个项目的工具提示

c# - 在 ASP.Net MVC 5 中使用 DataTables 行重新排序更新值

.net - OO 模式 : Shared work between abstract base class and subclasses

c# - 通过堆栈的异步/等待行为

jsf - 我应该如何以及何时从数据库中为 JSF dataTable 加载模型

c# - 如何将多个 Json 对象传递给 ASP.net MVC Controller ?

c# - 如何将 X 按钮绑定(bind)到窗口的关闭按钮