我一直在努力处理一小段代码。我有一个CSV文件,其中一列包含一串数字。我可以毫无问题地导入该文件并显示它。
我的目标是获取每个表中的数字并将其放入单独的字符串中,通过函数运行该字符串,然后将结果放回到第二列的数据网格中。有没有办法,我应该使用下面的代码这样做;我认为应该做到这一点,我认为应该这样做。
编辑:我调整了代码,它现在按照我想要的方式工作,但我不能将结果插入除第一个列之外的任何列。有没有一种方法可以将结果定位到第二列?
using (var fs = File.OpenRead(Dialog.FileName))
using (var reader = new StreamReader(fs))
{
List<string> lista = new List<string>();
List<string> listb = new List<string>();
while (!reader.EndOfStream)
{
var line = reader.ReadLine();
var values = line.Split(',');
lista.Add(values[0]);
dt1.Rows.Add(values[0]);
}
foreach (var item in lista)
{
string temp;
GetLuhnCheckDigit(item);
listb.Add(last.ToString());
temp = item + last.ToString();
dt1.Rows.Add(temp); //This only adds to the first column
}
dataGridView1.DataSource = dt1;
答案 0 :(得分:1)
在不知道GetLuhnCheckDigit
方法的作用的情况下,无法确定第二列包含的值。查看已发布的代码,有很多内容缺失,例如数据表有多少列,Dialog
变量定义在哪里?什么是last
?
假设DataTable
dt1
中至少有两列,我不知道您为什么要将这些项添加到第一列,然后循环遍历这些项的列表以设置第二列。看来同时添加两个列会更容易。
您可以在阅读文件时完成所有这些操作:
try {
using (var fs = File.OpenRead(Dialog.FileName)) {
using (var reader = new StreamReader(fs)) {
List<string> lista = new List<string>();
List<string> listb = new List<string>();
string temp;
while (!reader.EndOfStream) {
var line = reader.ReadLine();
var values = line.Split(',');
lista.Add(values[0]);
GetLuhnCheckDigit(values[0]); // <-- What is this method doing???
listb.Add(last.ToString());
temp = values[0] + last.ToString();
dt1.Rows.Add(values[0], temp); // <-- this adds both columns
}
dataGridView1.DataSource = dt1;
}
}
}
catch (Exception e) {
MessageBox.Show("Error: " + e.Message);
}
如果我遗失了某些内容,请告诉我,因为我对GetLuhnCheckDigit
方法可能做的事情一无所知。