作者J002 (阿里山 我來了XD~)
看板C_Sharp
標題Re: [問題] List<string> 與 string[,] 轉換?
時間Mon Apr 27 22:05:29 2015
※ 引述《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
→ GoalBased: msdn上面找不到Assert.IsType 是幹嘛用的 04/27 23:19
推 Litfal: 斷言檢查,通常用在單元測試裡面 04/27 23:44
是單元測試沒錯 小弟用xUnit
→ GoalBased: 謝謝樓上 學習了! 04/28 00:52
推 don750421: 感謝前輩回復,問題二先測一下,好像是錯誤的@@ 04/28 01:59
→ don750421: 我需要的是string[,] to List.. 04/28 01:59
→ don750421: 可是您寫的是List<string> to List<string>.. 04/28 01:59
已更改,您再看看這樣對不對~
推 leicheong: Jagged array和Multi-dimensional array是不同的. 04/28 07:46
→ leicheong: 多維陣列要求同一維度的最長度相同, 因此只能靠取各維 04/28 07:49
→ leicheong: 最大值把Array new出來後, 再用nested loop把element 04/28 07:50
→ leicheong: copy進去. 04/28 07:50
了解… 感謝前輩指導<(_ _)>
※ 編輯: J002 (203.67.9.208), 04/28/2015 09:40:15
→ don750421: 感謝lei前輩補充,這兩種陣列真的是有差異... 04/28 20:01
→ don750421: 搜尋網路上一些教學或是程式碼,都將這兩者統稱為 04/28 20:01
→ don750421: 2維陣列,似乎是蠻大的認知錯誤... 04/28 20:01
→ don750421: 感謝J002前輩回覆,問題二的部分是二維陣列@@ 04/28 20:03
→ don750421: 一維直接用ToList()就能轉過去了@@ 04/28 20:04
→ don750421: 我需要的答案應該是... 04/28 20:05
→ don750421: List<string> lsName = new List<string>{ 04/28 20:06
→ don750421: "[0,0][1,0][2,0][3,0]", 04/28 20:06
→ don750421: "[0,1][1,1][2,1][3,1]", 04/28 20:06
→ don750421: "[0,2][1,2][2,2][3,2]"} 04/28 20:06
→ don750421: 也就是把二維陣列組成以上的List<string>... 04/28 20:07
吃飽後又改了一次~ 您再看看對了嗎XD"
還是我多轉了一次List<string>?
※ 編輯: J002 (118.165.112.69), 04/28/2015 21:39:05