我的问题与提及的问题有些相同 - How to add comma separated string into datatable in c#?
但在我的情况下,列数不固定。 其中高是最高值而有些是不同时间间隔的值。
所以,我必须把这些价值显示到午夜...... 如果用户选择下午1点,我必须从下午1点到午夜显示所有值.. 因此,用户选择的内容会有所不同,他们可以选择凌晨4点,所以列数会有所不同。
产品名称High 15:00 14:45 14:30 14:15 14:00 13:45 13:30 ... 产品1 12 10 10 10 10 10 12 0 n 产品2 10 10 0 0 0 0 0 0 n 产品3 10 10 10 10 10 10 5 5 n
我能够以逗号分隔值的形式绑定数据但是如何在数据表中绑定我不理解..
如果我们认为用户选择了第15个小时,我的逗号分隔值有点像下面的15:45到午夜...
Product1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 ,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 ,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 |
Product2,9.00,1,1,1,9.00,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1 ,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 ,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 |
答案 0 :(得分:0)
这样的代码如何
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
namespace ConsoleApplication22
{
class Program
{
static void Main(string[] args)
{
string[] inputs = {
"Product1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1",
"Product2,9.00,1,1,1,9.00,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1"
};
List<List<string>> data = new List<List<string>>();
foreach (string input in inputs)
{
List<string> newData = input.Split(new char[] { ',' }).ToList();
data.Add(newData);
}
DataTable dt = new DataTable();
int maxRows = data.Select(x => x.Count).Max();
for(int column = 0; column < data.Count; column++)
{
dt.Columns.Add(data[column][0], typeof(string));
dt.Columns[column].AllowDBNull = true;
}
for (int row = 0; row < maxRows; row++)
{
dt.Rows.Add();
}
for (int column = 0; column < data.Count; column++)
{
for (int row = 0; row < data[column].Count; row++)
{
dt.Rows[row][column] = data[column][row];
}
}
}
}
}