Foros del Web » Programación para mayores de 30 ;) » .NET »

Linq Campo Calculado

Estas en el tema de Linq Campo Calculado en el foro de .NET en Foros del Web. Tengo una consulta linq, y en ella quiero que "Total" acumule la suma de "Valor1 + Valor2": @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código C: Ver original IQueryable < ...
  #1 (permalink)  
Antiguo 16/05/2011, 09:24
Avatar de dmassive  
Fecha de Ingreso: febrero-2002
Ubicación: Paraná - Entre Ríos - Argentina
Mensajes: 279
Antigüedad: 22 años, 2 meses
Puntos: 7
Pregunta Linq Campo Calculado

Tengo una consulta linq, y en ella quiero que "Total" acumule la suma de "Valor1 + Valor2":

Código C:
Ver original
  1. IQueryable<MiClase> miclase =
  2.     from item in coleccion
  3.     where item.Id == Id
  4.     select new MiClase
  5.     {
  6.         ApellidoYNombre = item.Apellido + ", " + item.Nombre,
  7.         Valor1 = coleccion.Where(...),
  8.         Valor2 = coleccion.Where(...),
  9.         Total = Valor1 + Valor2;
  10.     };

Eso da error en esta linea, ya que no reconoce que "Valor1" y "Valor2" existan:
Código C:
Ver original
  1. Total = Valor1 + Valor2;

Una solucion es hacer esto, pero me parece innecesario reprocesar algo que ya calcule:
Código C:
Ver original
  1. Total = coleccion.Where(...) + coleccion.Where(...);

¿Alguna Sugerencia sobre como usar las variables Valor1 y Valor2 para sumarlas sin tener que procesarlas 2 veces?

Desde ya gracias.
__________________
Blümchen... einfach die rave Prinzessin
http://www.dmassive.com.ar/
  #2 (permalink)  
Antiguo 16/05/2011, 20:22
 
Fecha de Ingreso: octubre-2010
Ubicación: Cordoba, Argentina
Mensajes: 40
Antigüedad: 13 años, 6 meses
Puntos: 2
Respuesta: Linq Campo Calculado

Hola!... bueno, Me parece que estas usando mal linq. porque si hace un select de la clase "MiClase", no hace falta que hagas un Select new....
Despues, si el valor total, siempre va a ser igual a Valor1+Valor2, directamente podes agregar una propiedad extendiendo la clase de Linq. Esto lo haces en el archivo DataContext.cs, y seria asi:
Cita:
partial class MiClase
{
public decimal Total
{
get { return (Valor1+ Valor2); }
}
}
No entro mucho por aca... pero cualquier cosa hablame por msn y te ayudo. ramiroli@hot... Saludos
  #3 (permalink)  
Antiguo 17/05/2011, 05:27
Avatar de dmassive  
Fecha de Ingreso: febrero-2002
Ubicación: Paraná - Entre Ríos - Argentina
Mensajes: 279
Antigüedad: 22 años, 2 meses
Puntos: 7
De acuerdo Respuesta: Linq Campo Calculado

Muchas Gracias me sirvio tu idea de redefinir la clase, yo la tenia asi:

Código C:
Ver original
  1. protected class MiClase
  2. {
  3.     public string ApellidoYNombre;
  4.  
  5.     public decimal Valor1;
  6.  
  7.     public decimal Valor2;
  8.  
  9.     public decimal Total;
  10. }

Y ahora asi:
Código C:
Ver original
  1. protected class MiClase
  2. {
  3.     public string ApellidoYNombre;
  4.  
  5.     public decimal Valor1;
  6.  
  7.     public decimal Valor2;
  8.  
  9.     public decimal Total
  10.     {
  11.         get { return (Valor1 + Valor2); }
  12.     }      
  13. }

Respecto a el "Select new MiClase" es porque necesito devolver un objeto de tipo MiClase, sino me da error. Salvo que este mal armada la consulta en general.
__________________
Blümchen... einfach die rave Prinzessin
http://www.dmassive.com.ar/

Etiquetas: linq, campos, calculadora
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:26.