我正在编写一个页面排名算法,该算法使用二维数组来存储数据。 1表示页面具有指向另一页面的链接,0表示它没有。我的问题是:
有没有办法将2-d int[,]
矩阵转换为对象列表。
例如,我的矩阵看起来像这样:
int[,] matrix = new int[2, 2];
matrix[0,0] = 0
matrix[0,1] = 1
matrix[1,0] = 1
matrix[1,1] = 1;
它产生一个数组:
0 1
1 0
我想要做的是将此矩阵转换为List
个Page
个对象:
public class Page{
public string PageName {get;set;}
public List<Page> ShowsToPages {get; set;}
public Page(){ this.ShowsToPages = new List<Page>();}
}
在这个场景中,我会有一个包含2页的List<Page>
。每个页面对象都有一个列表,其中包含它显示的所有页面的引用。
答案 0 :(得分:1)
var pages = Enumerable.Range(0, array.GetLength(0))
.Select(i => { var page = new Page();
page.ShowsToPages.AddRange(Enumerable.Range(0, array.GetLength(1))
.Where(j => array(i, j) != 0)); return page; }).ToList();