是否可以将二维数组转换为对象列表

时间:2015-12-13 16:20:30

标签: c# arrays matrix

我正在编写一个页面排名算法,该算法使用二维数组来存储数据。 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

我想要做的是将此矩阵转换为ListPage个对象:

public class Page{         
    public string PageName {get;set;}
    public List<Page> ShowsToPages {get; set;}

    public Page(){ this.ShowsToPages = new List<Page>();}
}

在这个场景中,我会有一个包含2页的List<Page>。每个页面对象都有一个列表,其中包含它显示的所有页面的引用。

1 个答案:

答案 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();