none
請問如何從 List<string[]> 轉到 string[,]

    問題

  • 各位前輩好,

    雖然這個看起來很像學校作業問題之類的,但不是~"~

    程式大致流程如下,

    1. 取每筆資料都用string[]儲存,

    2. 檢查這筆資料是否「有內容」,無內容-跳過,有內容-List.Add

    3. 從 List<string[]> 轉 string[,]

    程式碼如下

    List<string[]> DataList = new List<string[]>();
    for (int i = 0; i < AllData.Length; i++)
    {
      string[] OneData = GetOneData(AllData[i]);
      
      // 檢查Data是否有內容。true-有。false-沒有
      if (CheckData(OneData))
      {
        DataList.Add(OneData);
      }
    }
    
    // 這裡卡住
    string[,] CheckedData = (string[,])DataList .ToArray();

    我知道總共有幾筆資料,但不確定每筆資料都有內容,所以才用List動態增加,

    也有嘗試用過ArrayList但是也不行。

    麻煩請各位前輩指導一下。



    • 已編輯 笨嘎嘎 2013年7月4日 上午 03:49 修正程式碼錯誤
    2013年7月4日 上午 03:37

解答

  • 簡單測試了一下,我是用下面的方式,參考看看

                List<string[]> stringCollection = new List<string[]>();
     
                for (int i = 0i < 100i++)
                {
                    string[] tmp = new string[] { "1""2""3" };
                    stringCollection.Add(tmp);
                    tmp = null;
                }
     
                string[][] converToArray = (string[][])stringCollection.ToArray();


    請注意討論區相關規則,良好的討論環境需要大家共同努力、遵守

    • 已標示為解答 笨嘎嘎 2013年7月4日 上午 08:16
    2013年7月4日 上午 03:58
  • 這道理很簡單啊,  當你是 List<string[]> 時, List 中的每一個 string[] 並不一定會是等長

    所以他原始轉出來, 一定只能變 [][]

    沒什麼浪費, 你要用 [,] 就是得轉, 沒別的辦法.


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。

    • 已標示為解答 笨嘎嘎 2013年7月4日 上午 08:16
    2013年7月4日 上午 04:08

所有回覆

  • 簡單測試了一下,我是用下面的方式,參考看看

                List<string[]> stringCollection = new List<string[]>();
     
                for (int i = 0i < 100i++)
                {
                    string[] tmp = new string[] { "1""2""3" };
                    stringCollection.Add(tmp);
                    tmp = null;
                }
     
                string[][] converToArray = (string[][])stringCollection.ToArray();


    請注意討論區相關規則,良好的討論環境需要大家共同努力、遵守

    • 已標示為解答 笨嘎嘎 2013年7月4日 上午 08:16
    2013年7月4日 上午 03:58
  • 改成這樣 ?

    string[][] CheckedData = DataList.ToArray();


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。

    2013年7月4日 上午 04:02
  • bauann前輩好,

    我知道這樣子可以做,

    但是string[][]與string[,]不太一樣,

    還是說我必須要List.ToArray() 轉string[][],

    在自己寫個小程式從string[][]轉string[,]?

    因為覺得這樣做有點浪費,

    所以想問各位前輩是否有更好的解法,

    或者各位前輩在實務上都怎麼做?

    2013年7月4日 上午 04:05
  • 這道理很簡單啊,  當你是 List<string[]> 時, List 中的每一個 string[] 並不一定會是等長

    所以他原始轉出來, 一定只能變 [][]

    沒什麼浪費, 你要用 [,] 就是得轉, 沒別的辦法.


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。

    • 已標示為解答 笨嘎嘎 2013年7月4日 上午 08:16
    2013年7月4日 上午 04:08
  • 因為記憶體位置不連續。這邊是指字串指標。

    不精確的問法,就會得到隨便猜的答案;自己都不肯花時間好好描述問題,又何必期望網友會認真回答?

    2013年7月4日 下午 02:03