我想验证主列中的金额总和以及详细列中的拆分金额。
我想逐个检查循环(Master和Detail),然后如果没有匹配,则向用户弹出一条消息
我有一个来自csv文本文件的记录,如下例所示:
column1,column2,column3,column4,column5,column6,column7,column8,column9,column10
********************************************************************************
Master,123456789,12345,03434343,2015-05-14,2015-05-29,16,100.00,0.00,2
Detail,123456789,12345,10.0,20.0,30.0,15.0,15.0,3.0,7.0
Master,893434343,34567,03432323,2015-05-14,2015-05-29,16,100.00,0.00,2
Master,123456789,12345,03434343,2015-05-14,2015-05-29,16,100.00,0.00,2
Detail,123456789,12345,10.0,20.0,30.0,15.0,15.0,3.0,7.0
Footer,0453434,12123243,2015-05-28,0800,052015,2,200.00,AED,1531
从上面的文件中,规则将是
我已将主记录复制到Datatable dt1,并将详细记录复制到文件中的Datatable dt2。
如何比较金额总和并向用户提出无效匹配错误?
答案 0 :(得分:0)
这段代码不优雅,可能有更好的方法。但是,我不确定在你的情况下,我已经用数据做了数据表。特别是因为你没有分享dt1和dt2的布局。
List<String[]> results = new List<String[]>();
String[] rawdata = File.ReadAllLines("c:\\data.txt");
for (int i = 2; i < rawdata.Length; i++)
{
String[] tmp = rawdata[i].Split(',');
if (tmp.Length == 10)
{
if ((tmp[0] == "Master") && (i < rawdata.Length))
{
float col4;
float col5;
float col6;
float col7;
float col8;
float col9;
float col10;
float sum;
String[] tmp2 = rawdata[i + 1].Split(',');
if (tmp2.Length == 10 && tmp2[0] == "Detail" && tmp[1] == tmp2[1] )
{
if (float.TryParse(tmp2[3], out col4) && float.TryParse(tmp2[4], out col5) && float.TryParse(tmp2[5], out col6) && float.TryParse(tmp2[6], out col7) && float.TryParse(tmp2[7], out col8) && float.TryParse(tmp2[8], out col9) && float.TryParse(tmp2[9], out col10))
{
if (float.TryParse(tmp[7], out sum))
{
if (sum == col4 + col5 + col6 + col7 + col8 + col9 + col10)
{
results.Add(new String[] { tmp[1], "Matches" });
}
else results.Add(new String[] { tmp[1], "Doesnt match" });
continue;
}
}
}
results.Add(new String[] { tmp[1], "No detail" });
}
}
}
我可以直观地确认结果包含所有答案