C# 将文本文件结果保存到LinQ to sql表

C# 将文本文件结果保存到LinQ to sql表,c#,sql,sql-server,linq,filereader,C#,Sql,Sql Server,Linq,Filereader,我已经编写了一些代码,使用某种linq方式逐行读取文件。现在我需要一些关于如何在数据库对象中插入以逗号分隔的每一行的建议。我在另一个代码上做了这个,但是它使用了一个while循环,这对于linq的初学者来说似乎有点困难。fileReader是表的名称,其作用类似于为类声明obj。DataClasses1DataContext是linq创建的连接的类。现在我可以在sql表中插入值0、1和2,但不能超过这个值。如有任何帮助或建议,将不胜感激。:)谢谢大家! DataClasses1DataC

我已经编写了一些代码,使用某种linq方式逐行读取文件。现在我需要一些关于如何在数据库对象中插入以逗号分隔的每一行的建议。我在另一个代码上做了这个,但是它使用了一个while循环,这对于linq的初学者来说似乎有点困难。fileReader是表的名称,其作用类似于为类声明obj。DataClasses1DataContext是linq创建的连接的类。现在我可以在sql表中插入值0、1和2,但不能超过这个值。如有任何帮助或建议,将不胜感激。:)谢谢大家!

    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();
    }
DataClasses1DataContext数据库;
私有void Readbtn_单击(对象发送方,事件参数e)
{
列表=新列表();
FileReader fr=新的FileReader();
var read=File.ReadAllLines(@“C:\Files\Archivo.txt”).SelectMany(line=>line.Split(',')).ToArray();
foreach(读取中的var字)
{
列表。添加(word);
列表框1.Items.Add(word);
}
fr.Matricula=列表[0];
fr.Nombre=列表[1];
fr.Sueldo=decimal.Parse(列表[2]);
db.FileReaders.InsertOnSubmit(fr);
db.SubmitChanges();
}
私有void Show_Click(对象发送方,事件参数e)
{
db=新的DataClasses1DataContext();
dataGridView1.DataSource=db.FileReaders.ToList();
}
私有void Form1\u加载(对象发送方、事件参数e)
{
db=新的DataClasses1DataContext();
}

希望我没弄错。看起来文件中的每一行都包含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])
    }); 
});

首先,您可以使用List.AddRange(read)、listBox1.Items.AddRange(read)来代替循环,您的archivo.txt结构是什么?我的兴趣不是列表框实际上是fr.matricula,这是我的对象,因为sql tableArchivo结构是******,asasaassa,74656565655645646,SDFSF,5646456546346,dfgg,30000,谢谢你的回答,你能解释一下你在这里做了什么吗?我也做了同样的事情,但是我必须转换l[0].Tostring(),当我尝试添加文件时,它只是出现了一个错误,格式不正确。你能解释一下或核实一下吗?tyInput字符串的格式不正确。它发生在第一个值Matricula上。给我FileReader类声明和文件的第一个true行。下面是:listBox1.Items.AddRange(readers.Select(r=>r.Matricula));上面说有一些无效的论点20080220,亚历山大,25000。FileReader是我的SQL表,我只是在我的另一个代码中这样做的:FileReader fr=new FileReader();和DataClasses1DataContext db=newdataclasses1datacontext();
List.AddRange(readers.Select(r => r.Matricula));  
listBox1.Items.AddRange(readers.Select(r => r.Matricula));  
db.FileReaders.InsertAllOnSubmit(readers);
db.SubmitChanges();