Simplificación de una expresión LINQ que encuentra la fecha más pequeña más pequeña que otra fecha -- # campo con linq campo con linq-to-sql camp codereview Relacionados El problema

Simplifying a LINQ expression that finds the largest date smaller than another date


4
vote

problema

Español

Tengo una consulta LINQ 2 SQL que necesita para ejecutar una subconsulta en la cláusula WHERE. La Subquía simplemente devuelve la fecha más grande (desde una columna de fecha) que es menor o igual a otra fecha (una entrada a la función).

Originalmente, lo tenía así (no en esto en el where cláusula de una consulta externa):

  skew.CalibrationDate.Date == (from skew2 in db.Skew                                where skew2.CalibrationDate.Date <= date.Date                                select skew2.CalibrationDate).Max()   

y luego lo simplificará a:

  skew.CalibrationDate.Date == db.Skew.Select(s => s.CalibrationDate.Date)                                     .Where(s => s <= date.Date)                                     .Max()   

(Tenga en cuenta que el 99887766555443333 Tabla / Objeto tiene múltiples columnas / propiedades, pero solo estoy interesado en el 9988777665544334 para esta cláusula y también que 9988777665544335 < / Código> es una entrada en la función en la que se encuentra, un 99887776555544336 ).

¿Es necesario que para mí tenga los tres de los tres 9988776665544337 , Where()8 y Max()9 llamadas o hay alguna redundancia aquí? ¿Podría poner una expresión de lambda en el skew.CalibrationDate.Date == (from skew2 in db.Skew where skew2.CalibrationDate.Date <= date.Date select skew2.CalibrationDate).Max() 0 llamada para deshacerse de uno de los otros?

Original en ingles

I have a LINQ 2 SQL query that needs to run a subquery in the where clause. The subquery just returns the largest date (from a date column) that is less than or equal to another date (an input to the function).

I originally had it like this (not this in the where clause of an outer query):

skew.CalibrationDate.Date == (from skew2 in db.Skew                                where skew2.CalibrationDate.Date <= date.Date                                select skew2.CalibrationDate).Max() 

And then simplified it to:

skew.CalibrationDate.Date == db.Skew.Select(s => s.CalibrationDate.Date)                                     .Where(s => s <= date.Date)                                     .Max() 

(note that the db.Skew table/object has multiple columns/properties but I'm only interested in the CalibrationDate for this clause and also that date is an input to the function that this is in, a regular DateTime variable).

Is it necessary for me to have all three of the Select(), Where() and Max() calls or is there some redundancy here? Could I put a lambda expression in the Max() call to get rid of one of the others?

        

Lista de respuestas

3
 
vote
vote
La mejor respuesta
 

¿Es esto lo que estás buscando?

  if0  

if1 devolverá el valor máximo en sí, no el objeto con la fecha máxima.

 

Is this what you are looking for?

skew.CalibrationDate.Date == db.Skew     .Where(s => s.CalibrationDate.Date <= date.Date)     .Max(s => s.CalibrationDate.Date) 

Max will return the maximum value itself, not the object with the maximum date.

 
 

Relacionados problema

8  ¿Este patrón de acceso inusual de datos crea algún problema?  ( Does this unusual data access pattern create any problems ) 
el fondo Dos principiantes sin acceso a un mentor experimentado Escriba una aplicación ASP .NET MVC, en su mayoría cruda simple, utilizando Linq a SQL par...

3  Optimización de código mediante la eliminación de iteración constante de su estructura  ( Code optimization by constant if structure iteration removal ) 
A continuación encontrará el código específico que estoy intentando optimizar. Tengo un método anterior al llamado getCount() , basado en parámetros similare...

9  Filtro de consulta LINQ a SQL, con la coincidencia de nombre Ignorando múltiples caracteres de puntuación  ( Linq to sql query filter with the name match ignoring multiple punctuation char ) 
Tengo la siguiente consulta Linq a SQL que funciona bien, pero se ve feo: var filter = "filter"; query = query.Where(x => x.Name.Replace("'", "").Repl...

7  Una forma genérica de usar LINQ a la entidad con los tipos y las operaciones desconocidas hasta el tiempo de ejecución  ( A generic way to use linq to entity with types and operations unknown until run ) 
Se solicitó una pregunta aquí Sobre la reflexión y LINQ a la entidad. Estoy tratando de modificar el código que se presentó para adaptarse a mis necesidades...

2  Retrasado incluye reglas para entidadesTyTyPeconfiguración utilizando expresiones LINQ  ( Delayed include rules for entitytypeconfiguration using linq expressions ) 
El objetivo de esta clase es establecer reglas para incluir las propiedades de navegación en el nivel de configuración y luego aplicar donde sea necesario en ...

5  Eficiencia de una consulta LINQ en una estructura anidada  ( Efficiency of a linq query on a nested structure ) 
Para un sitio web de encuestas He escrito esta consulta para mostrar los resultados de la encuesta, con un porcentaje para cada respuesta elegida: getFirst...

2  Linq C # tirando de la fila de la tabla a los campos de entrada  ( Linq c pulling from table row into input fields ) 
Hoy es la primera vez que he usado LINQ, así que quería obtener una revisión de código en esto y asegurarme de que lo voy correctamente. Estoy llenando los ...

1  Ansioso cargando profundamente en un modelo con una propiedad de colección cuyo tipo es heredado  ( Eager loading deeply into a model with a collection property whose type is inher ) 
Visual Studio generó esta gran ruta para mí, donde puedo cargar una entidad: // GET: api/Jobs/5 [ResponseType(typeof(Job))] public async Task<IHttpActionRe...

2  ¿Cómo hacer mi código más rápido y más fácil?  ( How to make my code faster and easier ) 
Este es mi código de pieza .cs donde estoy llamando storeprocedure en Linq a SQL: var rr_j_cat = db.allcategories().ToList();//its store procedure callin...

1  Agregando clientes y tipos de clientes  ( Aggregating clients and client types ) 
El código que he reunido logra lo que quiero, pero no sé si es la forma correcta de enfrentar el problema. Estoy tratando con 2 tablas (cliente, clientype) ...




© 2022 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos