我正在使用C#重寫一些ColdFusion代碼。使用什麼最好的數據結構?
的CF代碼看起來是這樣的:
一個數組包含由兩個部分組成的結構體:
- 另一個結構,它包含從數據文件中提取報頭數據。
- 二維數組,包含來自同一數據文件中每一行的實際數據。
在C#中,我使用Dictionary和Jagged Array。請參閱下面的代碼。這些是最好的數據結構嗎?
// Create AllDataArray that contains HeaderAndDataDict.
Dictionary<string, object>[] AllDataArray = new Dictionary<string, object>[1];
// Create HeaderAndData Dictionary.
Dictionary<string, object> HeaderAndDataDict = new Dictionary<string, object>();
// Add HeaderAndDataDict to AllDataArray[0].
AllDataArray[0] = HeaderAndDataDict;
// Create Header Dictionary.
Dictionary<string, string> HeaderDict = new Dictionary<string, string>();
// Populate Header Dictionary
HeaderDict.Add("Create Date", "10/20/2014");
HeaderDict.Add("ABC Rank", "ALL");
HeaderDict.Add("Status", "All");
// Add Header Dictionary to HeaderAndDataDict.
HeaderAndDataDict.Add("Header", HeaderDict);
// Create jagged array.
string[][] DataJaggedArray = new string[2][];
DataJaggedArray[0] = new string[] { "aaaa0", "bbbb0", "cccc0" };
DataJaggedArray[1] = new string[] { "aaaa1", "bbbb1", "cccc1" };
// Add DataJaggedArray to HeaderAndDataDict.
HeaderAndDataDict.Add("Data", DataJaggedArray);
// Display data.
for (int a = 0; a < AllDataArray.Length; a++)
{
Console.WriteLine("AllDataArray = " + a);
foreach (var key1 in HeaderAndDataDict.Keys)
{
Console.WriteLine("key= " + key1);
if (key1.Equals("Header"))
{
var valueHeader = (Dictionary<string, string>)HeaderAndDataDict[key1];
foreach (var key2 in valueHeader.Keys)
{
Console.WriteLine("valueHeader= {0}= {1}", key2, valueHeader[key2]);
}
}
else if (key1.Equals("Data"))
{
var valueData = (string[][])HeaderAndDataDict[key1];
Console.WriteLine("valueData length= " + valueData.Length);
for (int i = 0; i < valueData.Length; i++)
{
for (int j = 0; j < valueData[i].Length; j++)
{
Console.WriteLine("valueData= i= " + i + " j= " + j + " " + valueData[i][j]);
}
}
}
}
} // AllDataArray for loop
我將使用您的建議代碼。它的確更好。你能告訴我如何使用LINQ訪問dataItem嗎? – user2142250
你想用LINQ做什麼? – Bas
過濾標題中的數據並過濾DataRow中的數據。 – user2142250