Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用HtmlAgilityPack、嵌套列表和Linq_C#_Linq_Html Agility Pack - Fatal编程技术网

C# 使用HtmlAgilityPack、嵌套列表和Linq

C# 使用HtmlAgilityPack、嵌套列表和Linq,c#,linq,html-agility-pack,C#,Linq,Html Agility Pack,要过滤职业统计表的数据,可以使用LINQ方法。然后,过滤后的数据可用于使用LINQ方法创建CareerProperty对象列表 以下是我们如何获得所选季节ID和注册的职业统计数据: 要过滤职业统计表的数据,可以使用LINQ方法。然后,过滤后的数据可用于使用LINQ方法创建CareerProperty对象列表 以下是我们如何获得所选季节ID和注册的职业统计数据: 请您添加下一个信息:1。要应用于表的每一行的过滤器,例如S16和Pre;2.添加CareerProperties类并描述如何将td项目映

要过滤职业统计表的数据,可以使用LINQ方法。然后,过滤后的数据可用于使用LINQ方法创建CareerProperty对象列表

以下是我们如何获得所选季节ID和注册的职业统计数据:


要过滤职业统计表的数据,可以使用LINQ方法。然后,过滤后的数据可用于使用LINQ方法创建CareerProperty对象列表

以下是我们如何获得所选季节ID和注册的职业统计数据:


请您添加下一个信息:1。要应用于表的每一行的过滤器,例如S16和Pre;2.添加CareerProperties类并描述如何将td项目映射到此类的属性?我可以添加我如何使用foreach进行映射,对于我尝试映射的td映射,例如:季节到CareerProperties季节,因此在我的应用程序的下一部分中,我可以进行data.Season。请添加下一个信息:1。要应用于表的每一行的过滤器,例如S16和Pre;2.添加CareerProperties类并描述如何将td项映射到此类的属性?我可以添加我如何使用foreach进行映射,对于我尝试映射的td映射,例如:季节到CareerProperties季节,因此在我的应用程序的下一部分中,我可以执行data.seasure.Hey,Iliar我在使用此项进行类似操作时遇到问题。该表中间有一个THAD,它导致Syr.AgUMutOutOfRangeExtExc:索引超出范围错误。你介意再次帮我找出如何修复它吗?这是一张表:无论我做什么,当LINQ语句到达表中的第二个thead时,它都会出错。下面是一个声明,我不知道如何跳过第二个“thead”或其他方法。谢谢。尝试替换下一个代码。选择singlenode/*@id='content']/div/div/div[3]/div/div/div/div/div[2]/table.degenantstr.Skip2替换下一个代码。选择nodes/*[@id='content']/div/div/div/div[3]/div/div/div/div/div/div/div/div/div/2]/table/tbody/tr.Xpath/*[@id='content'],Iliar我在用这个做类似的事情时遇到了一个问题。该表中间有一个THAD,它导致Syr.AgUMutOutOfRangeExtExc:索引超出范围错误。你介意再次帮我找出如何修复它吗?这是一张表:无论我做什么,当LINQ语句到达表中的第二个thead时,它都会出错。下面是一个声明,我不知道如何跳过第二个“thead”或其他方法。谢谢。尝试替换下一个代码。选择singlenode/*@id='content']/div/div/div[3]/div/div/div/div/div[2]/table.degenantstr.Skip2替换下一个代码。选择nodes/*[@id='content']/div/div/div/div[3]/div/div/div/div/div/div/div/div/div/2]/table/tbody/tr.Xpath/*[@id='content']。
List<List<string>> table = playerDoc.DocumentNode
    .SelectSingleNode($"//*[@id='lg_team_user_leagues-{leagueId}']/div[4]/table/tbody")
    .Descendants("tr")
    .Skip(1)
    .Select(tr => tr.Elements("td").Select(td => td.InnerText.Trim()).ToList())
    .ToList();
foreach (var careerStats in findCareerNode)
{
    if (careerStats
        .SelectSingleNode($"//*[@id='lg_team_user_leagues-{leagueId}']/div[{div}]/table/tbody/tr[{index}]/td[1]").InnerText.Trim() != seasonId)
    {
        index++;
        continue;
    }
    else if (careerStats
       .SelectSingleNode(
           $"//*[@id='lg_team_user_leagues-{leagueId}']/div[{div}]/table/tbody/tr[{index}]/td[2]")
       .InnerText.Trim() != "Reg")
    {
        index++;
        continue;
    }
    var type = careerStats
        .SelectSingleNode(
            $"//*[@id='lg_team_user_leagues-{leagueId}']/div[{div}]/table/tbody/tr[{index}]/td[2]")
        .InnerText;
    var record = careerStats
        .SelectSingleNode(
            $"//*[@id='lg_team_user_leagues-{leagueId}']/div[{div}]/table/tbody/tr[{index}]/td[3]")
        .InnerText;
    var amr = careerStats
        .SelectSingleNode(
            $"//*[@id='lg_team_user_leagues-{leagueId}']/div[{div}]/table/tbody/tr[{index}]/td[4]")
        .InnerText ?? "0.0";
    var goals = careerStats
        .SelectSingleNode(
            $"//*[@id='lg_team_user_leagues-{leagueId}']/div[{div}]/table/tbody/tr[{index}]/td[5]")
        .InnerText;
    var assists = careerStats
        .SelectSingleNode(
            $"//*[@id='lg_team_user_leagues-{leagueId}']/div[{div}]/table/tbody/tr[{index}]/td[6]")
        .InnerText;
    var sot = careerStats
        .SelectSingleNode(
            $"//*[@id='lg_team_user_leagues-{leagueId}']/div[{div}]/table/tbody/tr[{index}]/td[7]")
        .InnerText;
    var shots = careerStats
        .SelectSingleNode(
            $"//*[@id='lg_team_user_leagues-{leagueId}']/div[{div}]/table/tbody/tr[{index}]/td[8]")
        .InnerText;
    var passC = careerStats
        .SelectSingleNode(
            $"//*[@id='lg_team_user_leagues-{leagueId}']/div[{div}]/table/tbody/tr[{index}]/td[9]")
        .InnerText;
    var passA = careerStats
        .SelectSingleNode(
            $"//*[@id='lg_team_user_leagues-{leagueId}']/div[{div}]/table/tbody/tr[{index}]/td[10]")
        .InnerText;
    var keypass = careerStats
        .SelectSingleNode(
            $"//*[@id='lg_team_user_leagues-{leagueId}']/div[{div}]/table/tbody/tr[{index}]/td[11]")
        .InnerText;
    var interceptions = careerStats
        .SelectSingleNode(
            $"//*[@id='lg_team_user_leagues-{leagueId}']/div[{div}]/table/tbody/tr[{index}]/td[12]")
        .InnerText;
    var tac = careerStats
        .SelectSingleNode(
            $"//*[@id='lg_team_user_leagues-{leagueId}']/div[{div}]/table/tbody/tr[{index}]/td[13]")
        .InnerText;
    var tacA = careerStats
        .SelectSingleNode(
            $"//*[@id='lg_team_user_leagues-{leagueId}']/div[{div}]/table/tbody/tr[{index}]/td[14]")
        .InnerText;
    var blk = careerStats
        .SelectSingleNode(
            $"//*[@id='lg_team_user_leagues-{leagueId}']/div[{div}]/table/tbody/tr[{index}]/td[15]")
        .InnerText;
    var rc = careerStats
        .SelectSingleNode(
            $"//*[@id='lg_team_user_leagues-{leagueId}']/div[{div}]/table/tbody/tr[{index}]/td[16]")
        .InnerText;
    var yc = careerStats
        .SelectSingleNode(
            $"//*[@id='lg_team_user_leagues-{leagueId}']/div[{div}]/table/tbody/tr[{index}]/td[17]")
        .InnerText;
    ...
}
// Now the return type is a List of CareerProperties.
List<CareerProperties> table = playerDoc.DocumentNode
    .SelectSingleNode($"//*[@id='lg_team_user_leagues-{leagueId}']/div[4]/table/tbody")
    .Descendants("tr")
    .Skip(1)
    // Up to here is your code. Here you select all rows from the table.
    // Each row is presented as List<string>.
    .Select(tr => tr.Elements("td").Select(td => td.InnerText.Trim()).ToList())
    // Here we filter table rows by "seasonId" and "Reg".
    .Where(tr => tr[0] == seasonId && tr[1] == "Reg")
    // Here we create objects CareerProperties from filtered rows.
    .Select(tr => new CareerProperties
        {
            Type = tr[2],
            Record = tr[3],
            Amr = tr[4],
            Goals = tr[5]
            Assists = tr[6],
            // Fill other properties.
            ...
        })
    .ToList();