none
object陣列轉成字串陣列 RRS feed

  • 問題

  • 各位先進好!小弟這裡有一個問題想要請教一下,

    我目前有一個從資料庫取得的Data Table(22*3),

    我想要將他轉換成字串陣列,我目前的作法是先將他轉為obj 陣列,

    但是我要將obj陣列轉換成字串陣列時,使用string[][]arr=LoadData.Cast<string>().ToArray();

    這個語法它會通知我兩個陣列的大小不一樣錯誤訊息,

    我有去看過兩個陣列的大小的確是不一樣,

    我的疑問是object的陣列(2D)排列跟string的陣列(2D)排列組合不同,是不是會導致它大小不一樣,

    因為object的陣列似乎跟一般陣列排列組合不同,

    還有一個問題想要請教一下,我這個問題的解法是不是用Data Table(22*3)轉字串陣列會比較好做呢?

    該用什麼方式寫會比較好呢?再請各位先進指導一下,感謝!

    2020年4月1日 上午 10:12

解答

    • 已標示為解答 seanhua 2020年4月8日 上午 10:25
    2020年4月1日 下午 02:15
  • 直接轉 IEnumerable<T> 應該比用陣列好用。

      static void Main(string[] args)
            {
                var table = new DataTable();
                table.Columns.Add(new DataColumn("C1"));
                table.Columns.Add(new DataColumn("C2"));
    
                for(int i = 0; i < 10; i ++)
                {
                    var row = table.NewRow();
                    row[0] = i.ToString();
                    row[1] = (100 + i).ToString();
                    table.Rows.Add(row);
                }
                var result  = table.AsEnumerable().Select(x => new { col1 = x.Field<string>("C1"), col12= x.Field<string>("C2") });            foreach (var item in result)
                {
                    Console.WriteLine($"{item.col1} ,  {item.col12}");
                }
                Console.ReadLine();
            }


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

    • 已標示為解答 seanhua 2020年4月8日 上午 10:25
    2020年4月1日 下午 02:35
    版主

所有回覆

    • 已標示為解答 seanhua 2020年4月8日 上午 10:25
    2020年4月1日 下午 02:15
  • 直接轉 IEnumerable<T> 應該比用陣列好用。

      static void Main(string[] args)
            {
                var table = new DataTable();
                table.Columns.Add(new DataColumn("C1"));
                table.Columns.Add(new DataColumn("C2"));
    
                for(int i = 0; i < 10; i ++)
                {
                    var row = table.NewRow();
                    row[0] = i.ToString();
                    row[1] = (100 + i).ToString();
                    table.Rows.Add(row);
                }
                var result  = table.AsEnumerable().Select(x => new { col1 = x.Field<string>("C1"), col12= x.Field<string>("C2") });            foreach (var item in result)
                {
                    Console.WriteLine($"{item.col1} ,  {item.col12}");
                }
                Console.ReadLine();
            }


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

    • 已標示為解答 seanhua 2020年4月8日 上午 10:25
    2020年4月1日 下午 02:35
    版主
  • 你原來的陣列若是

    DataTable(22*3) : 這是一維陣列

    DataTable(22, 3) : 這是二維陣列

    DataTable(22)(3) : 這是不規則陣列

    你宣告 string[][] arr 這是不規則陣列


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

    2020年4月2日 下午 03:14
  • 感謝this先進的分享,我後來有想到跟你提供使用for迴圈To String的方法,

    應該是可行的,感謝分享!

    2020年4月8日 上午 10:22
  • 感謝 Bil Chung先進的回覆,您提供的這個方法我會測試看看,

    讓我又學到的新的方法,感謝!

    2020年4月8日 上午 10:24
  • 感謝心冷熱情熄先進的指導,讓我釐清一些陣列的概念,感謝分享!

    2020年4月8日 上午 10:27