【问题标题】:LINQ-TO-XML using UNION使用 UNION 的 LINQ-TO-XML
【发布时间】:2010-02-04 23:57:34
【问题描述】:

我正在尝试联合查询以创建 XML 文件。查询本身作为 T-SQL 工作,但我作为 LINQ-TO-XML 的实现失败并出现“无法翻译表达式...”错误。

我问错问题了吗?这种方法完全错误吗?我是 LINQ 的新手。如何从 2 个查询创建单个 XML?

Dim db As New SOMEDataContext

Dim members As New XElement("members", _
    (From c In db.Employees _
    Join cf In db.BowlingTeams On c.ID Equals cf.BowlingTeam_Text _
        Where c.DEPARTMENT = "Housewares" _
            Select New XElement("member", _
                New XElement("id", c.ID), _
                New XElement("title", c.TITLE))) _
    .Union(From e In db.Employees _
        Where e.DEPARTMENT = "Housewares" _
        Where e.POSITION Like "*XYZ*" _
            Select New XElement("member", _
                New XElement("id", e.ID), _
                New XElement("title", e.TITLE))))

【问题讨论】:

    标签: vb.net linq-to-xml


    【解决方案1】:

    这是我在 VB 中的做法:

        Dim members = <members>
                          <%= From c In db.Employees _
                              Join cf In db.BowlingTeams On c.ID Equals cf.BowlingTeam_Text _
                              Where c.DEPARTMENT = "Housewares" _
                              Select <member>
                                         <id><%= c.ID %></id>
                                         <title><%= c.TITLE %></title>
                                     </member> %>
                          <%= From e In db.Employees _
                              Where e.DEPARTMENT = "Housewares" _
                              Where e.POSITION Like "*XYZ*" _
                              Select <member>
                                         <id><%= e.ID %></id>
                                         <title><%= e.TITLE %></title>
                                     </member> %>
                      </members>
    

    这利用了 XML Literals,从而避免了对所有 New XElement 调用的需要。

    【讨论】:

      【解决方案2】:

      我认为你只需要做这样的事情。不确定VB语法是否正确。

         Dim query As From c In db.Employees Join cf In db.CourseFaculties On c.ID Equals cf.COURSEFACULTY_Text Where c.DEPARTMENT = "Housewares" Select New XElement("member", _
             New XElement("id", c.ID), New XElement("title", c.TITLE))).Union(From e In db.DATATEL_Employees Where e.DEPARTMENT = "Housewares" Where e.POSITION Like "*XYZ*" _
             Select New XElement("member", New XElement("id", e.ID), New XElement("title", e.TITLE)));
      
         Dim members As New XElement("members");
         foreach (XElement result in query)
             members.Add(result);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-01-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多