studio - Cómo seleccionar los valores de fecha Mín. Y Máx. En Consulta Linq
linqpad sql to linq (3)
Esto debería funcionar para ti
//Retrieve Minimum Date
var MinDate = (from d in dataRows select d.Date).Min();
//Retrieve Maximum Date
var MaxDate = (from d in dataRows select d.Date).Max();
(De here )
Me estoy moviendo de SQL a Linq y necesito ayuda. Estoy probando tanto Linq-to-SQL como Linq-to-Entities. Quiero probar ambos para decidir cuál me conviene más. Tu ayuda es apreciada. Gracias
¿Cuál es la sintaxis correcta (en vb.net si es posible) para seleccionar el valor mínimo de fecha de una tabla?
Dim mydata As New DataClassesDataContext
Dim myresult = From cv In mydata.T1s
Select cv.DATE1, cv.Date2, cv.Datex
myresult=Dump()
Lo intenté, intenté usar
Select amin=cv.DATE1.Min(), amax=cv.Date1.Max(), bmin=cv.Date2.Min(), etc....
está dando este error ''Min'' is not a member of ''Date''
.
Los datos sobre los que quiero obtener el mínimo y el máximo están a continuación:
IOrderedQueryable<VB$AnonymousType_0<DateTime,DateTime>> (16 items)
Date1 Date2
17/Oct/09 12:00:00 AM 23/Oct/09 12:00:00 AM
10/Jan/09 12:00:00 AM 15/Feb/09 12:00:00 AM
27/Mar/09 12:00:00 AM 27/Mar/09 12:00:00 AM
30/May/09 12:00:00 AM 30/May/09 12:00:00 AM
25/Jan/09 12:00:00 AM 25/Mar/09 12:00:00 AM
01/Nov/09 12:00:00 AM 01/Nov/09 12:00:00 AM
21/Feb/09 12:00:00 AM 04/Mar/09 12:00:00 AM
02/Mar/09 12:00:00 AM 09/Mar/09 12:00:00 AM
07/Jul/09 12:00:00 AM 07/Jul/09 12:00:00 AM
27/Sep/09 12:00:00 AM 27/Sep/09 12:00:00 AM
05/Nov/09 12:00:00 AM 05/Nov/09 12:00:00 AM
15/Apr/09 12:00:00 AM 15/Apr/09 12:00:00 AM
08/Jun/09 12:00:00 AM 08/Jun/09 12:00:00 AM
07/Jul/09 12:00:00 AM 07/Jul/09 12:00:00 AM
30/Jul/09 12:00:00 AM 30/Jul/09 12:00:00 AM
04/Nov/09 12:00:00 AM 04/Nov/09 12:00:00 AM
Ahora resuelto, pero esta no es la solución perfecta, parece que necesitaba hacer una consulta separada para cada columna que requiere una función de agregación:
Sub Main
Dim mm = (From cv In T1s
Select Datez = (cv.Date1)).Min()
Dim mm1 = (From cv In T1s
Select Datez = (cv.Date1)).Max()
Dim mm2 = (From cv In T1s
Select Datez = (Date2)).Min()
Dim mm3 = (From cv In T1s
Select Datez = (Date2)).Max()
mm.dump()
mm1.dump()
mm2.dump()
mm3.dump()
End Sub
Los resultados están abajo
10/Jan/09 12:00:00 AM
05/Nov/09 12:00:00 AM
15/Feb/09 12:00:00 AM
05/Nov/09 12:00:00 AM
Si está buscando la fecha más antigua (valor mínimo), debe ordenar y luego tomar el primer artículo devuelto. Perdón por el C #:
var min = myData.OrderBy( cv => cv.Date1 ).First();
Lo anterior devolverá el objeto completo. Si solo quieres que te devuelvan la fecha:
var min = myData.Min( cv => cv.Date1 );
Con respecto a qué dirección tomar, re: Linq a Sql vs Linq a Entidades, realmente no hay mucha opción en estos días. Linq a Sql ya no se está desarrollando; Linq to Entities (Entity Framework) es la ruta recomendada por Microsoft en estos días.
De Microsoft Entity Framework 4 en acción (versión MEAP) por Manning Press:
¿Y el futuro de LINQ to SQL?
No es un secreto que LINQ to SQL está incluido en Framework 4.0 por razones de compatibilidad. Microsoft ha declarado claramente que Entity Framework es la tecnología recomendada para el acceso a los datos. En el futuro, se mejorará mucho y se integrará estrechamente con otras tecnologías, mientras que LINQ to SQL solo se mantendrá y evolucionará poco.
dim mydate = from cv in mydata.t1s
select cv.date1 asc
datetime mindata = mydate[0];