Верните больше столбцов таблицы из двух с помощью zip.enumerable
У меня есть следующий код C#, как добавить данные из var aways в третий столбец "Away" ???? С "Возвращение names.Zip ...." Я не могу....
Что я уже пробовал:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using HtmlAgilityPack; namespace GetGamerankingsData { public partial class Form1 : Form { DataTable table = new DataTable("GameRankingsDataView"); HtmlWeb web = new HtmlWeb(); public Form1() { InitializeComponent(); InitTable(); } public class NameAndScore { public string Name { get; set; } public string Score { get; set; } } private void InitTable() { table.Columns.Add("Name", typeof(string)); table.Columns.Add("Score", typeof(string)); table.Columns.Add("Away", typeof(string)); gameRankingsDataView.DataSource = table; } private async Task<List<nameandscore>> GameRankingsFromPage(int pageNum) { string url = "https://www.totalcorner.com/team/view/6"; if (pageNum != 0) url = "https://www.totalcorner.com/team/view/6/page:" + pageNum.ToString(); var doc = await Task.Factory.StartNew(() => web.Load(url)); var nameNodes = doc.DocumentNode.SelectNodes("//*[@id='inplay_match_table']/tbody[3]/tr/td[1]/div/a"); var scoreNodes = doc.DocumentNode.SelectNodes("//*[@id='inplay_match_table']/tbody[3]/tr/td[4]/a/span"); var awayNodes = doc.DocumentNode.SelectNodes("//*[@id='inplay_match_table']/tbody[3]/tr/td[6]/a/span"); if (nameNodes == null || scoreNodes == null) return new List<nameandscore>(); var names = nameNodes.Select(node => node.InnerText); var scores = scoreNodes.Select(node => node.InnerText); var aways = scoreNodes.Select(node => node.InnerText); return names.Zip(scores, (name, score) => new NameAndScore() { Name = name, Score = score }).ToList(); } private async void Form1_Load(object sender, EventArgs e) { int pageNum = 0; var rankings = await GameRankingsFromPage(0); while (rankings.Count > 0 && pageNum < 3) { foreach (var ranking in rankings) table.Rows.Add(ranking.Name, ranking.Score); rankings = await GameRankingsFromPage(++pageNum); } } } }
ZurdoDev
Пожалуйста, разместите только соответствующий код. А так я понятия не имею, о чем вы просите и где застряли.
DENDRINOS K
Спасибо Вам за Ваш ответ, Зурдодев......
Часть моего кода :
вернуться names.Zip(баллы, (название, результат) =&ГТ; новый NameAndScore() { имя = имя, Результат = Результат }).Список();
возвращает только два из трех значений-массивов ToList для таблицы (имена и оценки)...
Я хочу вернуться и третьим (кстати) .....
Sinisa Hajnal
Есть ли причина, по которой Вы не можете изменить NameAndScore с помощью GetGameData (просто изменить имя) и добавить необходимую функциональность?
DENDRINOS K
Спасибо тебе, Синиса !!!
Нет, это не так ... но я ученик с C# и не знаю точно, что делать...