我已经制作了一些代码来使用某种linq方式逐行读取文件。现在我需要一些关于如何在数据库对象中插入用逗号分隔的每一行的建议。我已经在另一个代码上做了这个,但是它使用了一个while循环,这种情况对于linq中的初学者来说似乎有点困难。 fileReader是表的名称,其工作方式类似于声明类的obj。 DataClasses1DataContext是linq创建的连接的类。至于现在,我可以将值0,1和2插入到sql表中但不多于此。任何帮助或建议将受到高度赞赏。 :)谢谢!
DataClasses1DataContext db;
private void Readbtn_Click(object sender, EventArgs e)
{
List<string> List = new List<string>();
FileReader fr = new FileReader();
var read = File.ReadAllLines(@"C:\Files\Archivo.txt").SelectMany(line => line.Split(',')).ToArray();
foreach (var word in read )
{
List.Add(word);
listBox1.Items.Add(word);
}
fr.Matricula = List[0];
fr.Nombre = List[1];
fr.Sueldo = decimal.Parse(List[2]);
db.FileReaders.InsertOnSubmit(fr);
db.SubmitChanges();
}
private void Show_Click(object sender, EventArgs e)
{
db = new DataClasses1DataContext();
dataGridView1.DataSource = db.FileReaders.ToList();
}
private void Form1_Load(object sender, EventArgs e)
{
db = new DataClasses1DataContext();
}
答案 0 :(得分:1)
希望我能帮到你。看起来您文件中的每一行都包含Matricula,Nombre和Sueldo的3个值。如果是这样,那么你试着采取另一种方式:
var readers = new List<FileReader>();
System.IO.File.ReadAllLines(@"C:\Files\Archivo.txt").ToList()
.ForEach(l => {
string[] splitted = l.Split(',');
readers.Add(new FileReader(){
Matricula = splitted[0],
Nombre = splitted[1],
Sueldo = decimal.Parse(splitted[2])
});
});
因此,您拥有FileReader值数组。然后:
List.AddRange(readers.Select(r => r.Matricula));
listBox1.Items.AddRange(readers.Select(r => r.Matricula));
db.FileReaders.InsertAllOnSubmit(readers);
db.SubmitChanges();