-1

多次元配列を作成しました:

 string[,] array_questions = new string[dt.Rows.Count, dt.Columns.Count]; 
    for (i = 0; i < dt.Rows.Count; i++)
   {
   for (j = 0; j < dt.Columns.Count; j++)
   {
       array_questions[i, j] = dt.Rows[i][j].ToString();
       //Response.Write(array_questions[i, j]);
  }
 //  Response.Write(Environment.NewLine);
 //Response.Write("\n");
  }
foreach (string number in array_questions)
    {
        //Response.Write(number + " ");
        //Response.Write(Environment.NewLine);
        Response.Write(string.Join(", ", number) + Environment.NewLine);         
    }

しかし、次のようなエラーが表示されます: エラー 1 The best overloaded method match for 'string.Join(string, string[])' has some invalid arguments.. 助けてください

4

2 に答える 2

1

を使用するには、配列をフラット化する必要がありますstring.Join。セパレーターと一次元配列を取るので、おそらくこのようなことをする必要があるかもしれません. しかし、ここで何を達成しようとしているのかわかりません。string.Join(string, string[])あなたは次のように呼び出そうとしていますstring.Join(string, string)

次のようなことを試してください:

        var sdArray= new List<string>();
        for (var i = 0; i < dt.Rows.Count; i++) //Get the length of first Dimension
        {
            for (var j = 0; j < dt.Columns.Count; j++) //Get the length of second Dimension
            {
                sdArray.Add(array_questions[i, j]);
            }
        }

       ///
        Response.Write(string.Join(", ", sdArray) + Environment.NewLine);

Linq を使用すると、これをより良い方法で平坦化できます。

このようなもの

  string joinedSetOfQns= string.Join(",", 
       Enumerable.Range(0, dt.Rows.Count)
        .SelectMany(i => Enumerable.Range(0, dt.Columns.Count)
        .Select(j => array_questions[i, j])));    

               Response.Write(joinedSetOfQns + Environment.NewLine);  

これは string.Join の定義です

public static string Join(
    string separator,
    params string[] value  /// <-- Takes single Dimensional Array not a string.
)

更新: Rowwise に参加する必要があるため

        for (var i = 0; i < dt.Rows.Count; i++)
        {
            var result = new List<string>();
            for (var j = 0; j < dt.Columns.Count; j++)
            {
                result.Add(array_questions[i, j]);
            }
           Response.Write(string.Join(", ", result) + Environment.NewLine);
        }
于 2013-06-05T04:26:39.293 に答える
1

文字列を結合するために for ループは必要ありません。

string.Join(", ", array_questions)

コードを置き換える

foreach (string number in array_questions)
{
    //Response.Write(number + " ");
    //Response.Write(Environment.NewLine);
    Response.Write(string.Join(", ", number) + Environment.NewLine);         
}

Response.Write(string.Join(", ", array_questions) + Environment.NewLine); 
于 2013-06-05T04:20:42.810 に答える