【发布时间】:2013-10-02 06:05:32
【问题描述】:
伙计们,我有一个返回 3 个值的查询(-4.00、-7.53、-15.00。 我在名为 ReaderResult 的列表中返回这些,如代码所示,但是当它们被添加到列表中时,我还想保留列表中添加的元素的总数
DataReader = DoQuery(" select oa.[OtherAmount] FROM [Biatss_PC_SRV].[Pax].[SalesDocumentOtherAmount] as oa "
+"INNER JOIN [Biatss_PC_SRV].[Pax].[SalesRelatedDocumentInformation] as rd on oa.RelatedDocumentGuid = rd.RelatedDocumentGuid "
+"INNER JOIN [Biatss_PC_SRV].[Pax].[SalesDocumentHeader] as h on rd.HdrGuid = h.HdrGuid where h.DocumentNumber = '" + txtTicketNumber.Text.ToString() + "'");
//check DataReader
if (DataReader == null)
{
DataReader.Close();
DataReader.Dispose();
}
else
{
if (DataReader.HasRows)
{
//setting variables to be used to initial values
ii = 0;
double sumOfTaxes = 0;
ReaderResult.Clear();
while (DataReader.Read())
{
//for ( ii = 0; ii < DataReader.FieldCount; ii++)
//{
if (DataReader.IsDBNull(0))
{
string CaseNull = "";
ReaderResult.Add(CaseNull);
}
else
{
//put results in LIST<>
ReaderResult.Add(Convert.ToString(DataReader.GetDecimal(0)));
//double sumLaSa =+ Convert.ToDouble(ReaderResult.Last()); VALUE HERE IS ONLY THE LAST OF THE 3 NOT THE SUM
//sumOfTaxes =+ Convert.ToDouble(DataReader.GetDecimal(0));
//double sumLaSa =+ Convert.ToDouble(ReaderResult.Last().Last()); ERROR I GET HERE says cannont convert char to double
myTextboxListForAmounts[ii].Text = Convert.ToString(DataReader.GetDecimal(0));
// }
if (ii > 6)
{
//make txtXT visible and display summed up amount in it
lblXT.Visible = true;
txtXT.Visible = true;
txtXT.Text = Convert.ToString(sumOfTaxes);
}
ii++;
}
}
}
else
{
DataReader.Close();
DataReader.Dispose();
}
DataReader.Close();
DataReader.Dispose();
}
请问我怎样才能得到返回值的总和?
【问题讨论】:
-
如果你想要 SQL 输出的总和,你总是有 SQL 命令 SUM()
-
我建议您使用存储过程并从那里返回 SUM!
-
sumOfTaxes =+ Convert.ToDouble(DataReader.GetDecimal(0));有什么问题? ...哦,等等,你的意思是+=? - 顺便说一句,您可能想阅读SQL Incection 并使用using 和IDisposables 或至少try-finally。 -
@Corak 谢谢。 += 解决了我的问题。我很傻。
标签: c# datareader type-conversion