Re: [問題] List<string> 與 string[,] 轉換?

看板C_Sharp (C#)作者 (阿里山 我來了XD~)時間10年前 (2015/04/27 22:05), 10年前編輯推噓3(3018)
留言21則, 4人參與, 最新討論串2/2 (看更多)
※ 引述《don750421 (1+1≠2)》之銘言: : 請問一下,List<string> 與 string[,] 要如何互轉呢?? : 問題一: List<string> => string[,] : 假設有個List<string> 如下 : List<string> lsName = new List<string>(); : lsName.Add("John,Tom,Kevin,Tony"); : lsName.Add("Jane,Candy,Amy,Sandy"); : lsName.Add("Tomas,Tommy,Michael,Mark"); : 希望可以轉成以下這種二維陣列 : [0,0][1,0][2,0][3,0] : [0,1][1,1][2,1][3,1] : [0,2][1,2][2,2][3,2] : 除了for 迴圈外,能夠透過LINQ或Lamdba或其他方式做到嗎? : 問題二: : 假設有個二維陣列如上,有辦法在返回成List<string>嗎? : 也就是輸出成... : List<string> lsName = new List<string>() : { : "JohnTomKevinTony","JaneCandyAmySandy","TomasTommyMichaelMark" : }; : 先謝謝各位前輩@@ 下班吃飽了 手癢寫一下@@" 還請各位前輩指教0rz 問題一: public void ListToArray() { var lsName = new List<string> { "John,Tom,Kevin,Tony", "Jane,Candy,Amy,Sandy", "Tomas,Tommy,Michael,Mark" }; var lsNameContainArray = new List<string[]>(); lsName.ForEach(names => { lsNameContainArray.Add(names.Split(',')); }); var resultArray = lsNameContainArray.ToArray(); Assert.IsType(typeof(string[][]), resultArray); } 問題二:(再次修正XD) public void ArrayToList() { var nameArray = new[] { new []{"John","Tom","Kevin","Tony"}, new []{"Jane","Candy","Amy","Sandy"}, new []{"Tomas","Tommy","Michael","Mark"} }; var nameList = nameArray.ToList(); var resultList = new List<List<string>>(); nameList.ForEach(names => { resultList.Add(names.ToList()); }); Assert.IsType<List<List<string>>>(resultList); } -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 118.165.17.178 ※ 文章網址: https://www.ptt.cc/bbs/C_Sharp/M.1430143532.A.A0A.html ※ 編輯: J002 (118.165.17.178), 04/27/2015 22:06:10

04/27 23:19, , 1F
msdn上面找不到Assert.IsType 是幹嘛用的
04/27 23:19, 1F

04/27 23:44, , 2F
斷言檢查,通常用在單元測試裡面
04/27 23:44, 2F
是單元測試沒錯 小弟用xUnit

04/28 00:52, , 3F
謝謝樓上 學習了!
04/28 00:52, 3F

04/28 01:59, , 4F
感謝前輩回復,問題二先測一下,好像是錯誤的@@
04/28 01:59, 4F

04/28 01:59, , 5F
我需要的是string[,] to List..
04/28 01:59, 5F

04/28 01:59, , 6F
可是您寫的是List<string> to List<string>..
04/28 01:59, 6F
已更改,您再看看這樣對不對~

04/28 07:46, , 7F
Jagged array和Multi-dimensional array是不同的.
04/28 07:46, 7F

04/28 07:49, , 8F
多維陣列要求同一維度的最長度相同, 因此只能靠取各維
04/28 07:49, 8F

04/28 07:50, , 9F
最大值把Array new出來後, 再用nested loop把element
04/28 07:50, 9F

04/28 07:50, , 10F
copy進去.
04/28 07:50, 10F
了解… 感謝前輩指導<(_ _)> ※ 編輯: J002 (203.67.9.208), 04/28/2015 09:40:15

04/28 20:01, , 11F
感謝lei前輩補充,這兩種陣列真的是有差異...
04/28 20:01, 11F

04/28 20:01, , 12F
搜尋網路上一些教學或是程式碼,都將這兩者統稱為
04/28 20:01, 12F

04/28 20:01, , 13F
2維陣列,似乎是蠻大的認知錯誤...
04/28 20:01, 13F

04/28 20:03, , 14F
感謝J002前輩回覆,問題二的部分是二維陣列@@
04/28 20:03, 14F

04/28 20:04, , 15F
一維直接用ToList()就能轉過去了@@
04/28 20:04, 15F

04/28 20:05, , 16F
我需要的答案應該是...
04/28 20:05, 16F

04/28 20:06, , 17F
List<string> lsName = new List<string>{
04/28 20:06, 17F

04/28 20:06, , 18F
"[0,0][1,0][2,0][3,0]",
04/28 20:06, 18F

04/28 20:06, , 19F
"[0,1][1,1][2,1][3,1]",
04/28 20:06, 19F

04/28 20:06, , 20F
"[0,2][1,2][2,2][3,2]"}
04/28 20:06, 20F

04/28 20:07, , 21F
也就是把二維陣列組成以上的List<string>...
04/28 20:07, 21F
吃飽後又改了一次~ 您再看看對了嗎XD" 還是我多轉了一次List<string>? ※ 編輯: J002 (118.165.112.69), 04/28/2015 21:39:05
文章代碼(AID): #1LFa8ieA (C_Sharp)
討論串 (同標題文章)
文章代碼(AID): #1LFa8ieA (C_Sharp)