0

我已经编写了一些代码来使用某种 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();
    }
4

1 回答 1

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();
于 2013-11-10T22:26:23.470 回答