C# 将XML标记插入数据库列

C# 将XML标记插入数据库列,c#,sql-server,xml,C#,Sql Server,Xml,我已经将XML反序列化为类,这些类可以正常工作。它返回每个XML标记的列表 例如,打印名称标记的所有值: var First = deserializedList.Select(item => item.Personpost.Namn.Fornamn).ToList(); foreach (var o in First) { Console.WriteLine("Namn: "

我已经将XML反序列化为类,这些类可以正常工作。它返回每个XML标记的列表

例如,打印名称标记的所有值:

   var First = deserializedList.Select(item => item.Personpost.Namn.Fornamn).ToList();
                foreach (var o in First)
                {  
                    Console.WriteLine("Namn: " + o); 
                }
现在我想知道是否能够将该对象作为列插入数据库表中

像这样的

string connetionString = null;
            SqlConnection connection;
            SqlCommand command;
            SqlDataAdapter adpter = new SqlDataAdapter();
            DataSet ds = new DataSet();
            XmlReader xmlFile;
            string sql = null;


            connetionString = "Data Source=tsrv2062;Initial Catalog=Bums;User ID=*****;Password=*****";

            connection = new SqlConnection(connetionString);

            xmlFile = XmlReader.Create("navetout.xml", new XmlReaderSettings());
            ds.ReadXml(xmlFile);


            connection.Open();



            SqlCommand command1 = new SqlCommand("INSERT INTO Seamen(FirstName) values(@FirstName)", connection);
            command1.Parameters.AddWithValue("@FirstName", First);

            command1.ExecuteNonQuery();

            connection.Close();
            Console.WriteLine("Done");
我尝试了这个,但出现了错误:

没有来自对象类型System.Collections.Generic.List`1的映射 [[System.String,mscorlib,Version=4.0.0.0,Culture=neutral, PublicKeyToken=b77a5c561934e089]]转换为已知 提供者


不能将
List
作为命令参数传递。 如果要插入该列表中的所有值,应首先遍历
First
列表中的所有项目(与第一个示例中的操作类似)并插入值

你方代码的c/p:

xmlFile = XmlReader.Create("navetout.xml", new XmlReaderSettings());


ds.ReadXml(xmlFile);


connection.Open();

SqlCommand command1 = new SqlCommand("INSERT INTO Seamen(FirstName) values(@FirstName)", connection);

foreach (var name in First)
{
    command1.Parameters.Clear();
    command1.Parameters.AddWithValue("@FirstName", name);

    command1.ExecuteNonQuery();
}

connection.Close();
Console.WriteLine("Done");

我还没有测试它,但这应该可以解决您的问题。

谢谢,但是如果我想同时插入多个列呢?有没有办法循环该循环中的每一列?