gpt4 book ai didi

c# - 将这两个表达式组合成一个 LINQ 表达式

转载 作者:行者123 更新时间:2023-11-28 05:00:47 24 4
gpt4 key购买 nike

我正在使用 HTMLAgilityPack 来解析一些 html。我得到了使用 xpath 查询与 linq 查询相结合时所期望的结果集。有没有一种方法可以将它们组合成一个 LINQ 查询?

var test = doc.DocumentNode.SelectNodes("//div[@class='product']");

foreach (var item in test)
{

var result = from input in item.Descendants("span")
where input.Attributes["class"].Value == "Bold"
where input.InnerHtml.ToUpper() == "GetItem"
select input;

return result;
}

最佳答案

如果您想将所有跨度收集在一起(如果我假设那是您想要的是正确的)...

我会先将它转换为更流畅的符号(我发现 SelectMany 更容易掌握这种方式 - 但那只是我)

(免责声明:我是凭内存写的,复制/粘贴你的代码 - 目前不是通过 VS - 你需要检查,如果有任何问题就让它写入 - 但我想我明白了好吧或多或少)

var test = doc.DocumentNode.SelectNodes("//div[@class='product']");
foreach(var item in test)
item.Descendants("span").Where(input => input.Attributes["class"].Value == "Bold").Where(input => input.InnerHtml.ToUpper() == "GetItem").Select(input => input);

最后……

var allSpans = doc.DocumentNode.SelectNodes("//div[@class='product']")
.SelectMany(item => item.Descendants("span").Where(input => input.Attributes["class"].Value == "Bold").Where(input => input.InnerHtml.ToUpper() == "GetItem"));

...或者按照这些思路

关于c# - 将这两个表达式组合成一个 LINQ 表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15720314/

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