Pase la lista como XElement para ser utilizada como parámetro de tipo de datos XML

Tengo un procedimiento almacenado en SQL Server

CREATE PROCEDURE ParseXML (@InputXML xml)

El tipo de datos para el parámetro de entrada es "xml".

En el código LINQ to SQL generado para el procedimiento almacenado, el parámetro de entrada es 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)

Ahora, ¿cómo puedo pasar la siguiente Lista al método ParseXML para hacer que el procedimiento almacenado funcione?

EDITAR:

Después de leer la respuesta, otra solución se enumera a continuación.

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);
} 

Código en cuestión

        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);

Estructura XML requerida

Nota: Este XML se usa para algunas operaciones, no para almacenar directamente en la base de datos como XML. Necesito escribir una consulta de selección que listará los datos del XML.

Lógica de procedimiento almacenado

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);

LEYENDO

Cómo serializar y guardar un objeto en la base de datos como Xml usando Linq to SQL

Cómo usar una consulta LINQ para obtener los valores de XElement cuando XElements tienen el mismo nombre

Linq-to-SQL con campos de base de datos XML: ¿por qué funciona esto?

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

Respuestas a la pregunta(2)

Su respuesta a la pregunta