gpt4 book ai didi

xml - LINQ to XML 和 Distinct 自定义类

转载 作者:数据小太阳 更新时间:2023-10-29 02:07:31 26 4
gpt4 key购买 nike

我有一个非常有趣的 LINQ 问题。我有一个文档,我正在尝试过滤结果,但为了过滤,我匹配来自 XML 的一个元素的 REGEX 结果。

我有以下内容,使用 LINQ to XML 来获取我正在寻找的个人数据。

Dim oDocument As XDocument
oDocument = XDocument.Load("test.xml")
Dim results = (From x In oDocument.Descendants.Elements("ROW") _
Select New With {.ApplicationName = GetApplicationName(x.Element("Message")), _
.EventId = x.Element("EventId")}).Distinct

但是,.Distinct 并没有按照我的意愿执行,它仍然显示“ApplicationName”和“EventId”的所有组合。

我最终需要的是一个不同的结果列表,在一个新对象中,其中包含应用程序名称和来自 XML 的事件 ID。

“GetAPplicationName”是一个解析值以查找正则表达式匹配的函数。

有什么建议吗?

示例 XML

<ROOT>
<ROW>
<EventId>1</EventId>
<CreatedTimestamp>2009-10-28</CreatedTimestamp>
<Message>There is a bunch
of
garbled
inforamtion here and I'm trying to parse out a value
Virtual Path: /MyPath then it continues on with more junk after the
message, including extra stuff
</Message>
<!--Other elements removed for brevity -->
</ROW>
<ROW>
<EventId>1</EventId>
<CreatedTimestamp>2009-10-28</CreatedTimestamp>
<Message>
There is a bunch
of
garbled
inforamtion here and I'm trying to parse out a value
Virtual Path: /MyPath then it continues on with more junk after the
message, including extra stuff
</Message>
<!--Other elements removed for brevity -->
</ROW>
</ROOT>

从这里我想要不同的/MyPath 和 EventId(在本例中为 1 个带有/MyPath 和 1 的条目。

我的 GetApplicationNameMethod,在此示例中将返回/MyPath

最佳答案

Ahmad 的回答是正确的,我投了赞成票。但是,我只是想为您的 LINQ to XML 查询指出替代的 VB.NET 特定语法。

Dim results = From x In doc...<ROW> _
Select New EventInfo With {.ApplicationName = GetApplicationName(x.<Message>.Value, _
.EventId = x.<EventId>.Value}

这将返回相同的结果,但如果您导入 xmlns,那么您将通过这种方式获得元素名称的 IntelliSense。

这是一篇描述如何在 VB.NET 中获取 XML IntelliSense 的文章:

http://msdn.microsoft.com/en-us/library/bb531325.aspx

关于xml - LINQ to XML 和 Distinct 自定义类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1569379/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com