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

作者: J002 (阿里山 我來了XD~)   2015-04-27 22:05:29
※ 引述《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);
}
作者: GoalBased (Artificail Intelligence)   2015-04-27 23:19:00
msdn上面找不到Assert.IsType 是幹嘛用的
作者: Litfal (Litfal)   2015-04-27 23:44:00
斷言檢查,通常用在單元測試裡面
作者: GoalBased (Artificail Intelligence)   2015-04-28 00:52:00
謝謝樓上 學習了!
作者: don750421 (1+1≠2)   2015-04-28 01:59:00
感謝前輩回復,問題二先測一下,好像是錯誤的@@我需要的是string[,] to List..可是您寫的是List<string> to List<string>..
作者: leicheong (睡魔)   2015-04-28 07:46:00
Jagged array和Multi-dimensional array是不同的.多維陣列要求同一維度的最長度相同, 因此只能靠取各維最大值把Array new出來後, 再用nested loop把elementcopy進去.
作者: don750421 (1+1≠2)   2015-04-28 20:01:00
感謝lei前輩補充,這兩種陣列真的是有差異...搜尋網路上一些教學或是程式碼,都將這兩者統稱為2維陣列,似乎是蠻大的認知錯誤...感謝J002前輩回覆,問題二的部分是二維陣列@@一維直接用ToList()就能轉過去了@@我需要的答案應該是...List<string> lsName = new List<string>{"[0,0][1,0][2,0][3,0]","[0,1][1,1][2,1][3,1]","[0,2][1,2][2,2][3,2]"}也就是把二維陣列組成以上的List<string>...

Links booklink

Contact Us: admin [ a t ] ucptt.com