c#对数组中的搜索结果求和

c#对数组中的搜索结果求和,c#,arrays,forms,sum,C#,Arrays,Forms,Sum,好的,这是我的问题。我有一个具有多个规格的车辆构造函数和一个注册车辆的类数组 在我的表格中,我希望让用户在该数组中搜索特定值(在这种情况下,用户应输入车辆类型和购买年份,从而在数组中搜索它们,在找到通讯员后,他必须选择他们的收购和出售价格),并返回利润总额 或者用更简单的方式:利润=销售价格-收购价格 到目前为止,我的代码分别显示了利润,然后是利润的总和,我如何得到后者 int i; bool found = false; double lucro = 0;

好的,这是我的问题。我有一个具有多个规格的车辆构造函数和一个注册车辆的类数组

在我的表格中,我希望让用户在该数组中搜索特定值(在这种情况下,用户应输入车辆类型和购买年份,从而在数组中搜索它们,在找到通讯员后,他必须选择他们的收购和出售价格),并返回利润总额

或者用更简单的方式:利润=销售价格-收购价格

到目前为止,我的代码分别显示了利润,然后是利润的总和,我如何得到后者

int i;
        bool found = false;
        double lucro = 0;
        for (i = 0; i < viaturas.NumElementos; i++)
            if (viaturas.get(i).CVTipoVeículo == Int32.Parse(cbtipoveiculo.Text))
            {
                if (viaturas.get(i).CVDataVenda.Year == Int32.Parse(tbanopesquisa.Text))
                {
                    double a = viaturas.get(i).CVPreçoVenda;
                    double b = viaturas.get(i).CVPreçoAquisição;
                    lucro += a - b;
                    found = true;
                    MessageBox.Show("O total de lucro das vendas em   " + viaturas.get(i).CVDataVenda.Year + "   foi de:   " + lucro + "€", "Lucro", MessageBoxButtons.OK);

                }
            }
        if (found == false)
        {
            MessageBox.Show("Conjunto de viaturas não existente!", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            LimpaCampos();
        }
inti;
bool-found=false;
双卢克罗=0;
对于(i=0;i
如果您想要一个将所有利润相加的值,请将代码更改为以下值

    int i;
    bool found = false;
    double lucro = 0;
    for (i = 0; i < viaturas.NumElementos; i++)
        if (viaturas.get(i).CVTipoVeículo == Int32.Parse(cbtipoveiculo.Text))
        {
            if (viaturas.get(i).CVDataVenda.Year == Int32.Parse(tbanopesquisa.Text))
            {
                double a = viaturas.get(i).CVPreçoVenda;
                double b = viaturas.get(i).CVPreçoAquisição;
                lucro += a - b; // Add it instead of overwriting

                found = true;
                //falta-me pô-lo a somar todos os lucros.

            }
        }
// Show a MessageBox here with a text (Sorry, I don't speak your language) that outputs your 'lucro' variable
inti;
bool-found=false;
双卢克罗=0;
对于(i=0;i

如果这不是你的意思,那么我不知道你怎么能把所有的利润都放到一个值中

只需声明另一个变量double Total=0;然后在循环内部写入Total+=lucro;最后,您将获得您应该使用System.Linq库扩展来实现此目的的总数。这是最清晰和足够快的。似乎你对C#不熟悉,对吗?@Steve我就是这样做的,但我仍然得到更多关于个人利益的信息。@Diegrafaelsouza说的是一般编程!但我该如何使用Linq呢?这就像是
viaturas.Where(v=>v.CVTipoVeículo==Convert.ToInt32(cbtipoveiculo.Text)).Sum(I=>I.CVPreçoVenda-I.CVPreçoAquisiço)
一样,你不需要
来处理
,这实际上是一种工作。但是现在我得到了两个消息框,第一个显示利润,第二个显示利润的总和。(请注意,语言错误:/)您必须删除for语句中的第一个MesageBox,只保留最后一个显示总和的MesageBox。