Коллекция List заполняется по два раза
public class Data
{
public string AlbumName { get; set; }
public string AlbumLink { get; set; }
public Data(string album, string link)
{
AlbumName = album;
AlbumLink = link;
}
}
public class Func
{
public static List<Data> dataList = new List<Data>();
public static IEnumerable<string> GetAlbumTitles(string fileContent)
{
var albums = Regex.Matches(fileContent, @"(?<=name=)[^#]*");
var albumsList = albums.Cast<Match>().Select(match => match.Value);
var links = Regex.Matches(fileContent, @"(?<=link=)[^#]*");
var linksList = links.Cast<Match>().Select(match => match.Value);
foreach (var album in albumsList)
{
dataList.Add(new Data(album, ????));//ПРОБЛЕМА
yield return album;
}
}
}
Я в коде пометил проблемное место, суть: мне нужно перебрать две коллекции albumsList и linksList, но если сделать так:
foreach (var album in albumsList)
{
foreach (var link in linksList)
{
dataList.Add(new Data(album, link));
}
yield return album;
}
, то у меня в Func.dataList получается всё по 2 раза. Я понимаю, что это происходит из-за того, что у меня цикл в цикле, но как сделать иначе?
Объясните, пожалуйста. Я уже очень долго ломаю голову, что-то не получается совсем.
Ответы (1 шт):
Автор решения: tym32167
→ Ссылка
Не понял, как у вас альбомы со ссылками сопостовляются, потому просто предположу, что альбому под индексом i соотвествует ссылка под индексом i
public static IEnumerable<string> GetAlbumTitles(string fileContent)
{
var albums = Regex.Matches(fileContent, @"(?<=name=)[^#]*");
var albumsList = albums.Cast<Match>().Select(match => match.Value).ToList();
var links = Regex.Matches(fileContent, @"(?<=link=)[^#]*");
var linksList = links.Cast<Match>().Select(match => match.Value).ToList();
for(int i=0; i<albums.Count; i++)
{
dataList.Add(new Data(albumsList[i], linksList[i]));
yield return albumsList[i];
}
}