2011-01-26 41 views
1

我想要生成一個列表,如下所示。我將如何在C#中做到這一點?如何生成數字列表的列表?

List<List<int>> data = {{0,0,0,0}, {0,0,0,1}, {0,0,0,2}, ..., {9,9,9,9}}; 
+2

「即時」是什麼意思? – basti 2011-01-26 09:58:11

+1

你想達到什麼目的? – 2011-01-26 09:59:10

+0

內部列表的內容必須在運行時填充。 – xport 2011-01-26 09:59:45

回答

3

另一種選擇......

var data = Enumerable.Range(0, 10000) 
        .Select(x => new List<int> 
         { x/1000, (x/100) % 10, (x/10) % 10, x % 10 }) 
        .ToList(); 

如果要生成的數字的任意號碼,你可以做這樣的事情:

int n = 4; // number of digits 

var data = Enumerable.Range(0, (int)Math.Pow(10, n)) 
        .Select(x => 
         Enumerable.Range(1, n) 
            .Select(y => 
             (x/(int)Math.Pow(10, n - y)) % 10) 
            .ToList()) 
        .ToList(); 
12

試試這個。

var numbers = Enumerable.Range(0, 10); 
var data = (from a in numbers 
      from b in numbers 
      from c in numbers 
      from d in numbers 
      select new List<int>() { a, b, c, d }).ToList(); 
0

簡單和「傻瓜」的解決方案:

List<List<int>> data = new List<List<int>>(); 

int i; 
int k; 
int l; 
int m; 

for(i=0; i<10; i++){ 
    data.add(new List<int>); 
    data[i].add(i); 
    for(k=0; k<10; k++){ 
     data[i].add(k); 
     for(l=0; l<10; k++){ 
     data[i].add(l);  
      for(m=0; m<10; k++){ 
      data[i].add(m); 
      } 
     } 
    } 
} 

沒有測試,但應該做的工作最重要的一部分 - 如果要填充了來自{0所有號碼清單,0,0,0}到{9,9,9,9}

1

由於您事先知道列表的大小,所以我更喜歡本地的二維數組。該代碼是這樣的:

 var data = new int[10000, 4]; 

     for (int i = 0; i < 10000; i++) 
     { 
      data[i,0] = (i/1000); 
      data[i,1] = (i/100) % 10; 
      data[i,2] = (i/10) % 10; 
      data[i,3] = i % 10; 
     }