일부 ColdFusion 코드를 다시 작성하기 위해 C#을 사용하고 있습니다.사용할 수있는 최상의 데이터 구조는 무엇입니까?
CF 코드는 다음과 같다 :
- 다른 구조체, 데이터 파일로부터 추출 된 헤더 데이터를 포함
어레이는 두 부분으로 구성된 구조체를 포함한다.
- 동일한 데이터 파일의 각 행에서 실제 데이터를 포함하는 2D 배열입니다.
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