none
Si se cumple 2 condiciones. Como puedo eliminar la primer condicion que se cumple y dejar la ultima? , C# RRS feed

  • Pregunta

  • Hola buenos dias. Como podria validar cual condicional if se hizo al ultimo.

    Por ejemplo, tengo un contador y de ese contador me sirven los numero 2 y 4, la mayoria solo cumple con el numero 2, pero en ocasiones el contador me da 4 y quiero que elimine la condicion dle numero 2 y me deje solo la del 4 que seria la ultima. 

    Ejemplo: 

                         String u_p = ""; 

                            if(c > 2 && c == 4)
                            {
                                u_p = "U";

                            }
                            else if(c <4 && c == 2)
                            {
                                u_p = "U";           
                            }

    En este codigo se cumplen las 2, como valido que solo haga valida la ultima y quede asi. 

    Si en contador es 2 la variable u_p =  "U" 

    Y si el contador es 4 la variable u_p = "U" pero la variable 2 que ya cumplio la condicion quede vacia u_p = "". 

                            
    lunes, 21 de octubre de 2019 16:34

Respuestas

Todas las respuestas

  • hola

    la condicion asi como la defines no cierra, algo esta mal pensado

    Analizalo de a partes, si evaluas que c<4 no tiene sentido usar el AND (o sea el &&) validando que sea ==2, dejando solo el == ya es suficiente

    quizas usar algo como ser

       if(c == 4)
       {
         u_p = "U";
       }
    
       if(c == 2)
       {
         u_p = "U";           
       }

    tambien podrias usar el swith

    switch (referencia de C#)

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina


    lunes, 21 de octubre de 2019 16:44
  • De echo si lo pensé y ya lo habia ejecutado, pero pasa lo siguiente. 

    Tengo el datagridview de esta manera:

    ID  | Nom  | Contador  !

     001   SSS          2

    001   SSS          1

    002   SSS          5

    002   SSS          4

    002   SSS          3

    002   SSS          2

    002   SSS          1

    Despues en un boton ejecuto ese if, recorriendo el datagridview individualmente por id de empleado y que sigue quedando asi 

    ID  | Nom  | Contador  ! U_P

     001   SSS          2          U

    001   SSS          1

    002   SSS          5

    002   SSS          4           U

    002   SSS          3

    002   SSS          2           U

    002   SSS          1 

    Y queda de la misma manera, toma tanto el contador 2 y el 4.

    Sin eliminar los contadores que tienen 2, ya que son necesario, tanto el 2 y el 4, individuales, nunca junto con el mismo ID del empleado.

    lunes, 21 de octubre de 2019 17:31
  • Y me gustaria que quedara asi 

    ID  | DATO  | Contador  ! U_P

     001   1sd         2          U

    001   34s         1

    002   SSS          5

    002   SSS          4           U

    002   SSS          3

    002   SSS          2           

    002   SSS          1 

    Pero no encuentro como validar la ultima condicion que se cumple

    Con el switch sucede lo mismo

    lunes, 21 de octubre de 2019 17:33
  • hola

    Me pregunto porque no explicaste antes lo del grid que iteras sus rows

    si lo registros estan ordenados por Id podrias aplicar un corte de control, se me ocurre agrupar usando linq

    var query = from row in DataGrisView1.Rows.Cast<DataGridViewRow>()
                    group row by row.Cells["Id"].Value into g
                    select g.OrderByDescending(x=> x.Cells["Contador"].Value).First();
    
    foreach(var row in query){
    
       row.Cells["U_P"].Value = "U";
    
    }

    agrupar por Id y luego cuando este agrupado lo ordenas descandente y tomar el primero que sera el contador con mayor valor

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    lunes, 21 de octubre de 2019 19:07
  • Muchas gracias, si me funciono
    lunes, 21 de octubre de 2019 22:08