C# 中將列表列表(List>)轉換為二維陣列

C# 中將列表列表(List>)轉換為二維陣列

C# 中將列表列表(List<List<T>>)轉換為二維陣列


資料來源: https://www.techiedelight.com/zh-tw/convert-a-list-of-lists-to-a-2d-array-in-csharp/


線上編譯器: https://dotnetfiddle.net/


網站Code

using System;
using System.Collections.Generic;					
public class Program
{
	public static void Main()
	{
        List<List<string>> lists = new List<List<string>>()
        {
            new List<string>() { "C", "C++" },
            new List<string>() { "Java", "Kotlin" }
        };
 
        string[,] arrays = new string[lists.Count, lists[0].Count];
        for (int i = 0; i < lists.Count; i++)
        {
            for (int j = 0; j < lists[i].Count; j++) {
                arrays[i,j] = lists[i][j];
            }
        }
 
        // 打印二維數組
		for(int i=0;i<2;i++)
		{
			Console.WriteLine(arrays[i,0]+" , "+arrays[i,1]);
		}
	}
}


自己實際應用Code[動態UI按鈕]

        public void SystrmMenuFunction(int intMenuId)//系統浮動菜單UI回應事件函數
        {
            //MessageBox.Show("SystrmMenuFunction  " + intMenuId);
            String[] StrAllName = new String[5] { "基本設定", "客顯畫面管理", "客顯資料管理", "VTEAM-KDS參數設定", "悠遊卡參數設定" };
            int[,] intAllValue = new int[5, 2] { { 0, 0 }, { 1, 1 }, { 2, 2 }, { 3, 3 }, { 4, 4 } };
            List<String> ListName = new List<String>();
            List<int> ListValue01 = new List<int>();//單列
            List<int> ListValue02 = new List<int>();//單列
            List<List<int>> ListValue = new List<List<int>>();//二維List
            for(int i=0;i< StrAllName.Length;i++)
            {
                if ((POS_ECMAPI.m_EASY_CARDModule == null) && (i==4))//沒有悠遊卡參數
                {
                    continue;//悠遊卡參數設定UI不用顯示
                }
                
                ListName.Add(StrAllName[i]);
                ListValue01.Add(intAllValue[i, 0]);
                ListValue02.Add(intAllValue[i, 1]);
            }
            ListValue.Add(ListValue01);
            ListValue.Add(ListValue02);
            DynamicSubMenuClear();//預防主菜單持續呼叫子菜單UI,但是又不執行子菜單功能的防呆
            switch (intMenuId)
            {
                case 0://系統設定
                    String[] StrName = ListName.ToArray();//new String[5] { "基本設定", "客顯畫面管理", "客顯資料管理", "VTEAM-KDS參數設定","悠遊卡參數設定"};
                    int[,] intValue = new int[ListValue[0].Count, ListValue.Count];//new int[5, 2] { { 0, 0 }, { 1, 1 }, { 2, 2 }, { 3, 3 }, { 4, 4 } }; 
                    for (int i = 0; i < ListValue[0].Count; i++)//二維List轉二維列
                    {
                        for (int j = 0; j < ListValue.Count; j++)
                        {
                            intValue[i, j] = ListValue[j][i];
                        }
                    }
                    Size SizeButton = new Size(270, 80);
                    bool blnImageMode = false;
                    bool blnVertical = true;
                    int intMaxRanks = StrName.Length;
                    m_DynamicSubMenuParm = new DynamicSubMenuParm(StrName, intValue, SizeButton, blnImageMode, blnVertical, intMaxRanks);
                    m_DynamicSubMenuUI = new DynamicSubMenuUI(m_DynamicSubMenuParm);
                    m_DynamicSubMenuUI.eventDynamicSubMenutrigger = new DynamicSubMenuUI.DynamicSubMenuEventHandler(SystrmSubMenu00); // 宣告承接event委派事件
                    m_DynamicSubMenuUI.StartPosition = FormStartPosition.Manual;
                    m_DynamicSubMenuUI.Location = new Point(170+5, 0+5);//main menu(170,0)
                    m_DynamicSubMenuUI.Owner = m_TranslucentLayeredUI;
                    m_DynamicSubMenuUI.Show();
                    break;
                case 1://周邊設備
                    sysMenuClear();
                    DeviceManagement DeviceManagementBuf = new DeviceManagement();
                    DeviceManagementBuf.ShowDialog();
                    break;
                case 2://雲報表
                    sysMenuClear();
                    break;
                case 3://資料更新
                    sysMenuClear();
                    if((m_StrPosOrderNumber.Length>0)&&(m_intOrderState==0))//判斷購物車的訂單單號是否還未結帳 
                    {//有未結帳訂單單號 
                        Msg MsgBuf = new Msg("目前購物車尚未完成結帳,無法提供資料更新");
                        MsgBuf.ShowDialog();
                    }
                    else
                    {//無未結帳訂單單號 
                        QuestionMsg QuestionMsgBuf = new QuestionMsg("確定執行資料更新?");
                        QuestionMsgBuf.ShowDialog();
                        if (QuestionMsgBuf.m_blnRun)
                        {
                            syncthreadStop();//停用執行序
                            mainInit(false);
                            ShowDailyQuestionMsg();
                        }
                    }
                    break;
                case 4://登出
                    sysMenuClear();
                    ShowLoginUI();
                    break;
            }
        }

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *