Passar lista como XElement a ser usado como parâmetro de tipo de dados XML

Eu tenho um procedimento armazenado no SQL Server

CREATE PROCEDURE ParseXML (@InputXML xml)

O tipo de dados para o parâmetro de entrada é "xml".

No código gerado LINQ to SQL para o procedimento armazenado, o parâmetro de entrada é System.Xml.Linq.XElement

[global::System.Data.Linq.Mapping.FunctionAttribute(Name="dbo.ParseXML")]
public ISingleResult<ParseXMLResult> ParseXML([global::System.Data.Linq.Mapping.ParameterAttribute(Name="InputXML", DbType="Xml")] System.Xml.Linq.XElement inputXML)

Agora, como posso passar a seguinte lista para o método ParseXML para fazer o procedimento armazenado funcionar?

EDITAR:

Depois de ler a resposta - outra solução está listada abaixo

XElement root = new XElement("ArrayOfBankAccountDTOForStatus",
new XAttribute(XNamespace.Xmlns + "xsi", "http://www.w3.org/2001/XMLSchema-instance"),
new XAttribute(XNamespace.Xmlns + "xsd", "http://www.w3.org/2001/XMLSchema"));


foreach (var element in bankAccountDTOList)
{

 XElement ex= new XElement("BankAccountDTOForStatus", 
                      new XElement("BankAccountID", element.BankAccountID),
                      new XElement("Status", element.Status));


 root.Add(ex);
} 

CODE In Question

        string connectionstring = "Data Source=.;Initial Catalog=LibraryReservationSystem;Integrated Security=True;Connect Timeout=30";
        var theDataContext = new DBML_Project.MyDataClassesDataContext(connectionstring);

        List<DTOLayer.BankAccountDTOForStatus> bankAccountDTOList = new List<DTOLayer.BankAccountDTOForStatus>();
        DTOLayer.BankAccountDTOForStatus presentAccount1 = new DTOLayer.BankAccountDTOForStatus();
        presentAccount1.BankAccountID = 5;
        presentAccount1.Status = "FrozenF13";

        DTOLayer.BankAccountDTOForStatus presentAccount2 = new DTOLayer.BankAccountDTOForStatus();
        presentAccount2.BankAccountID = 6;
        presentAccount2.Status = "FrozenF23";
        bankAccountDTOList.Add(presentAccount1);
        bankAccountDTOList.Add(presentAccount2);

        //theDataContext.ParseXML(inputXML);

Estrutura XML Requerida

Nota: Esse XML é usado para algumas operações, não para armazenar diretamente no banco de dados como XML. Eu preciso escrever uma consulta de seleção que listará os dados do XML.

Lógica de procedimento armazenado

DECLARE @MyTable TABLE (RowNumber int, BankAccountID int, StatusVal varchar(max))

INSERT INTO @MyTable(RowNumber, BankAccountID,StatusVal)

SELECT ROW_NUMBER() OVER(ORDER BY c.value('BankAccountID[1]','int') ASC) AS Row,
    c.value('BankAccountID[1]','int'),
    c.value('Status[1]','varchar(32)')
FROM
    @inputXML.nodes('//BankAccountDTOForStatus') T(c);

LEITURA

Como serializar e salvar um objeto no banco de dados como Xml usando o Linq to SQL

Como usar uma consulta LINQ para obter valores XElement quando os XElements tiverem o mesmo nome

Linq-to-SQL com campos de banco de dados XML - Por que isso funciona?

http://www.sqlteam.com/forums/topic.asp?TOPIC_ID=176385

questionAnswers(2)

yourAnswerToTheQuestion