0
我遇到了一個問題,我沒有比較正確的數據點,因爲我的測試只有一部分正在迭代。如何在C#中正確地增加多個循環#
//for each row from csv
foreach (DataRow dataRow in csvDataTable.Rows)
{
//for each cell from csv row
foreach (var csvItem in dataRow.ItemArray)
{
//for each audiogram
for (int i = 0; i < audioGramData.Count(); i++)
{
//for each stimulus frequency
for (int e = 0; e < audioGramData.Count(); e++)
{
string stimLevel = audioGramData[i].ToList()[e]["StimulusLevel"].ToString();
if (csvItem.ToString() != stimLevel)
{
return false;
}
}
}
}
}
return true;
測試的第一遍正確比較了csv文件中的第一個單元格與JSON對象的適當字段。但是,在第二遍中,只有stimLevel變量增加。
如果有3行的CSV文件,CSV文件3列,並在JSON對象3個stimLevels,測試的流動應該是這樣的:
((比較第一csvItem到第一stimLevel
csvItem ++
stimLevel ++)X3
的DataRow ++
聽力圖++)X3
的audioGramData 2D陣列是由第一含JSON數據錶轉換成JSON對象像這樣創建的:
sqlAdapter.Fill(sqlDataTable);
Conn.Close();
JObject someObject = JObject.Parse(sqlDataTable.Rows[0].ItemArray[0].ToString());
var audioGramData = (JArray)someObject["HIMSAAudiometricStandard"]["ToneThresholdAudiogram"];
你從哪裏得到'audioGramData'? – 2015-03-02 23:37:36
通過首先將包含JSON的dataTable轉換爲JSON對象來創建audioGramData 2D數組。 (代碼添加到問題)。 – MattJ 2015-03-02 23:47:03
這是一個使用linq可以完全消除大量多餘的ToList()調用的情況......沒有足夠的示例數據顯示這裏知道數據結構,但是當我看到ToList()[ 1] .ToList()[0] .ToList()[e]'告訴我,我們深入一個循環內部,但是對數據的操作超出了循環的範圍。 – Claies 2015-03-03 00:07:32