gpt4 book ai didi

c# - 对 XML 文件的条件 LINQ 查询

转载 作者:太空宇宙 更新时间:2023-11-03 15:57:01 24 4
gpt4 key购买 nike

对于我在 XML 文件上执行的 LINQ 查询,我将不胜感激。我无法在我的搜索中找到适用于我的案例的任何内容,但我不得不承认我仍在尝试找出 LINQ。所以,如果这是重复的并且我忽略了一些东西,我提前道歉。

我有一个 XML 文件,它是在应用程序启动时创建和填充的。我正在搜索此 XML 文件并尝试仅列出在“Citrix”下找到的给定主机名的所有“连接”元素。

因此,例如,给定以下 XML 文件,我只想返回
如果选择了“client2”,则为“desktop3”和“desktop4”。

XML 文件示例:

<ThinClients>
<ThinClient>
<Status>OK</Status>
<Hostname>client1</Hostname>
<Citrix>
<Connection>
<ConnectionName>desktop1</ConnectionName>
<XendesktopIP>192.168.0.10</XendesktopIP>
</Connection>
<Connection>
<ConnectionName>desktop2</ConnectionName>
<XendesktopIP>192.168.0.20</XendesktopIP>
</Connection>
</Citrix>
<ThinClient>
<ThinClient>
<Status>OK</Status>
<Hostname>client2</Hostname>
<Citrix>
<Connection>
<ConnectionName>desktop3</ConnectionName>
<XendesktopIP>192.168.0.30</XendesktopIP>
</Connection>
<Connection>
<ConnectionName>desktop4</ConnectionName>
<XendesktopIP>192.168.0.40</XendesktopIP>
</Connection>
</Citrix>
<ThinClient>
<ThinClients>

我能够获得所有 ThinClient 上所有 Citrix 连接的列表,但我很难只获得指定主机名的连接。

以下返回所有主机的所有 Citrix 连接,但我无法理解如何进一步处理它并仅将其隔离到主机名,因为主机名位于 XML 链的更上游。

public ObservableCollection<CitrixConnections> GetCitrixConnectionListByHostname(string Hostname)
{
IEnumerable<CitrixConnections> clients =
(from client in _Document.Elements("ThinClient").Elements("Citrix").Elements("Connection")
select new CitrixConnections
{
ConnectionName = client.Element("ConnectionName").Value,
XendesktopIP = client.Element("XendesktopIP").Value,
});

var clientsAsObservableCollection = new ObservableCollection<CitrixConnections>(clients);
return clientsAsObservableCollection;
}

最佳答案

这应该给你你想要的:

_Document
.Root
.Elements("ThinClient")
.Where(x => (string) x.Element("Hostname") == somevalue)
.SelectMany(x => x.Descendants("Connection"))
.Select(x => new CitrixConnections
{
ConnectionName = (string) x.Element("ConnectionName"),
XendesktopIP = (string)x.Element("XendesktopIP")
});

关于c# - 对 XML 文件的条件 LINQ 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23186504/

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