代码之家  ›  专栏  ›  技术社区  ›  Randy Minder

Linq—查询表并以XML形式返回结果

  •  0
  • Randy Minder  · 技术社区  · 15 年前

    我有以下表格结构:

    CREATE TABLE [Report].[MesReport](
        [MesReportID] [int] IDENTITY(1,1) NOT NULL,
        [ParentID] [int] NOT NULL,
        [ReportTitle] [nvarchar](80) NOT NULL,
        [ReportName] [nvarchar](80) NOT NULL,
        [DatabaseServer] [nvarchar](80) NOT NULL,
        [DatabaseName] [nvarchar](50) NOT NULL,
        [Login] [nvarchar](80) NOT NULL,
        [ReportFile] [varbinary](max) NULL
    

    我想创建一个Linq查询来查询这个表并生成以下XML。有人能帮忙吗?

    <MesReports> 
      <MesReport> 
          <ReportTitle>Mes to Sap Reconciliation Reports</ReportTitle> 
          <ReportName>None</ReportName>
          <DatabaseServer>None</DatabaseServer>
          <Database>None</Database>
          <Login>None</Login>
          <MesReportId>1</MesReportId> 
          <ParentId>-1</ParentId> 
      </MesReport> 
      <MesReport> 
          <ReportTitle>Finished Goods</ReportTitle> 
          <ReportName>None</ReportName>
          <DatabaseServer>None</DatabaseServer>
          <Database>None</Database>
          <Login>None</Login>
          <MesReportId>2</MesReportId> 
          <ParentId>1</ParentId> 
      </MesReport> 
      <MesReport> 
          <ReportTitle>Semi-Finished Goods</ReportTitle> 
          <ReportName>None</ReportName>
          <DatabaseServer>None</DatabaseServer>
          <Database>None</Database>
          <Login>None</Login>
          <MesReportId>3</MesReportId> 
          <ParentId>1</ParentId> 
      </MesReport> 
      <MesReport> 
          <ReportTitle>Warranty Reports</ReportTitle> 
          <ReportName>None</ReportName>
          <DatabaseServer>None</DatabaseServer>
          <Database>None</Database>
          <Login>None</Login>
          <MesReportId>4</MesReportId> 
          <ParentId>-1</ParentId> 
      </MesReport> 
      <MesReport> 
          <ReportTitle>Box - PBG</ReportTitle> 
          <ReportName>Warranty Box - PBG</ReportName>
          <DatabaseServer>MyServer</DatabaseServer>
          <Database>MESProduction</Database>
          <Login>6QDI+IoQbkZKJpVBcRJcNtoqR62606Q2</Login>
          <MesReportId>5</MesReportId> 
          <ParentId>4</ParentId> 
      </MesReport> 
      <MesReport> 
          <ReportTitle>Box - FFO</ReportTitle> 
          <ReportName>Warranty Box - FFO</ReportName>
          <DatabaseServer>MyServer</DatabaseServer>
          <Database>MESProduction</Database>
          <Login>6QDI+IoQbkZKJpVBcRJcNtoqR62606Q2</Login>
          <MesReportId>6</MesReportId> 
          <ParentId>4</ParentId> 
      </MesReport> 
      <MesReport> 
          <ReportTitle>Bin Count - PBG</ReportTitle> 
          <ReportName>Bin Count - PBG</ReportName>
          <DatabaseServer>MyServer</DatabaseServer>
          <Database>MESProduction</Database>
          <Login>6QDI+IoQbkZKJpVBcRJcNtoqR62606Q2</Login>
          <MesReportId>7</MesReportId> 
          <ParentId>4</ParentId> 
      </MesReport> 
      <MesReport> 
          <ReportTitle>Bin Count - FFO</ReportTitle> 
          <ReportName>Bin Count - FFO</ReportName>
          <DatabaseServer>MyServer</DatabaseServer>
          <Database>MESProduction</Database>
          <Login>6QDI+IoQbkZKJpVBcRJcNtoqR62606Q2</Login>
          <MesReportId>8</MesReportId> 
          <ParentId>4</ParentId> 
      </MesReport> 
    </MesReports> 
    
    1 回复  |  直到 15 年前
        1
  •  2
  •   James Curran    15 年前

    var reportdata = from r in db.MesReport
    //               where r.whatever ......
                    select r;
    
    var reportXmlItems = from rx in reportData
                   select new XElement("MesReport", 
                        new XElement("ReportTitle", rx.ReportTitle),
                        new XElement("ReportName", rx.ReportName
                        new XElement("DatabaseServer", rx.DatabaseServer
                        new XElement("Database", rx.Database
                        new XElement("Login", rx.Login
                        new XElement("MesReportId", rx.MesReportId
                        new XElement("ParentId", rx.ParentId)
                    );
    
     var reportXml = new XElement("MesReports", reportXmlItems);