【问题标题】:Asp.Net Linq and XML queryAsp.Net Linq 和 XML 查询
【发布时间】:2014-08-06 13:47:12
【问题描述】:

我正在尝试使用 LINQ 和“SELECT”函数中的“WHERE”函数获取一些数据

这是我的示例 XML

<Items>
<Extras>
    <Extra Code="TEST1" Quantity="1" />
    <Extra Code="TEST2" Quantity="1" />
</Extras>

<Options>
    <OptionalExtra Description="Test 1" Code="TEST1" type="TESTING1" />
    <OptionalExtra Description="Test 2" Code="TEST2" type="TESTING2"  />
</Options>
</Items>

这是我的 LINQ 查询

bookingsInfo = xel.Descendants("Extras").Descendants("Extra") _
  .Select(Function(f) New With { _
    .Code = f.Attributes("Code").First.Value, _
    .Type = f.Parent.Parent.Descendants("Options").Descendants("OptionalExtra") _
            .Where(Function(g) g.Attributes("Code").First.Value = _
            f.Attributes("Code").First.Value).Attributes("type").First.Value, _
    .Quantity = f.Attributes("Quantity").First.Value _
})

“类型”是我遇到的问题,我不确定是什么问题。

我无法控制 XML 的布局方式,但我可以编辑 LINQ 查询没有问题。

有人有什么建议吗?

提前致谢

【问题讨论】:

  • 您的 XML 没有 类型属性...那么您想得到什么?
  • 对不起@JonSkeet,我在输入时错过了这一点!查看更新
  • 好的,现在它就在那里,我们知道这就是“问题”——但你还没有真正描述过这个问题是什么。查询的目的是什么,目前发生了什么?
  • 查询正在生成“CODE”和“QUANTITY”,因为这些只是属性,但是当我尝试去找父母,然后进入其他演员以获得“TYPE”时“代码”在每个失败中都匹配,并给我一个“序列不包含元素”——这有意义吗?抱歉在我的 OP 中没有更具描述性
  • 不,这没有任何意义。如果您展示一个简短但完整的程序,其中包含预期输出和实际输出,这将更容易理解......

标签: asp.net xml vb.net linq


【解决方案1】:

我认为使用Join而不是Parent.Parent会更容易:

Dim bookingsInfo = From e In xel.Root.<Extras>.<Extra>
                   Join o In xel.Root.<Options>.<OptionalExtra> On e.@Code Equals o.@Code
                   Select New With { 
                       .Code = e.@Code,
                       .Type = o.@Type,
                       .Quantity = e.@Quantity
                   }

【讨论】:

  • 谢谢 - 效果很好,我没有意识到你可以用这种方式使用 LINQ,它比我被教导的方式要容易得多!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-07-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多