【问题标题】:Adding elements of a list c#添加列表的元素c#
【发布时间】: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 并使用usingIDisposables 或至少try-finally
  • @Corak 谢谢。 += 解决了我的问题。我很傻。

标签: c# datareader type-conversion


【解决方案1】:

解决了问题。

使用 Corak 点燃的解决方案达到了目标。

 sumOfTaxes =+ Convert.ToDouble(DataReader.GetDecimal(0));

修改为

 sumOfTaxes += Convert.ToDouble(DataReader.GetDecimal(0));  (+= instead of =+)
enter code here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-02-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-25
    • 2022-01-21
    • 1970-01-01
    • 2023-03-08
    • 1970-01-01
    相关资源
    最近更新 更多