2011-01-26 7 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

+1

あなたは何を達成しようとしていますか? –

+0

実行時に内部リストの内容を入力する必要があります。 – xport

答えて

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(); 
+0

私はこの1つ、それは発明です! – Shimrod

+0

内部リストの長さをグローバルconstan Nに依存させることは可能ですか?私の場合のように、私は4にNを設定しました。 – xport

+0

@xport:うん、私は答えを更新するよ... – LukeH

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(); 
+2

Rangeを使用して数値を作成することもできます。var numbers = Enumerable.Range(0、10); –

+0

@vc 74:もちろん、私は自分の答えを編集します。ありがとうございました。あなたの答えは –

+0

ありがとう。 – xport

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}

+0

なぜ-1?ちょうど私がそれを理解する方法で質問に答えることを試みたか。 – basti

+1

私はそうではありませんでした:-)しかし、あなたは10リストを生成することを通知(1つの事について)、回答は10,000リストを生成する必要があります –

+0

ああ私は参照してください - くそ... – basti

1

リストのサイズを事前に知っているので、ネイティブの2次元配列が好きです。コードは次のようになります。

 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; 
     } 
関連する問題