C# 用c语言解析动态创建的XML文档#

C# 用c语言解析动态创建的XML文档#,c#,xml-parsing,linq-to-xml,C#,Xml Parsing,Linq To Xml,我必须像这样解析XML文档: <?xml version="1.0" encoding="utf-8" ?> <DialsList> <Dial> <Id>123</Id> <Source>SQL</Source> <Server>myServer</Server> <Database>

我必须像这样解析XML文档:

    <?xml version="1.0" encoding="utf-8" ?>
    <DialsList>
      <Dial>
        <Id>123</Id>
        <Source>SQL</Source>
        <Server>myServer</Server>
        <Database>myDB</Database>
        <UserName>myUserName</UserName>
        <Password>myPassword</Password>
        <TableName>myTable</TableName>
        <Query>GetAvgForUser</Query>
        <Parameters>
          <Param1>
            <Name>@DialId</Name>
            <Type>Int</Type>
          </Param1>
          <Param2>
            <Name>@UserId</Name>
            <Type>String</Type>
          </Param2>
        </Parameters>
      </Dial>
      <Dial>
    <Id>789</Id>
    <Source>SQL</Source>
    <Server>someServer</Server>
    <Database>someDB</Database>
    <UserName>someUser</UserName>
    <Password>somePwd</Password>
    <TableName>someTbl</TableName>
    <Query>someQry</Query>
    <Parameters>
      <Param1>
        <Name>@myParam</Name>
        <Type>Int</Type>
      </Param1>
      <Param2>
        <Name>@anotherParam</Name>
        <Type>String</Type>
      </Param2>
    </Parameters>
  </Dial>
    </DialsList>
然后形成连接字符串并执行存储过程。
当它是动态的时,我该如何处理它呢?

我不知道dialDataSrc的类型,但这应该会帮助您:

var listOfparameters = DialsDoc
        .Element("Parameters")
        .Elements()
        .Select(p => MyCreateParam((string) p.Element("Name"), (string) p.Element("Type")))
        .ToList();
使用一个小助手方法来计算DbType等:

private SqlParameter MyCreateParam(string name, string _type) { ... }

谢谢,我已经添加了helper方法。但是,我现在收到一条错误消息:“System.Data.SqlClient.SqlParameter不包含'ToList'的定义,并且没有扩展方法'ToList'在“.ToList()”中接受类型为……”的第一个参数。是否检查了元素和元素?ToList的arg应该是一个IEnumerable。显然,“Select”结尾缺少一个“')”。
private SqlParameter MyCreateParam(string name, string _type) { ... }