validaciones tres net meses fechas entre diferencia dias con comparar cantidad años c# linq datetime linq-to-entities datetime-comparison

tres - diff fechas c#



¿Cómo realizo la comparación de fechas en la consulta EF? (11)

Por favor ayuda. Estoy intentando descubrir cómo usar DATE o DATETIME para comparar en una consulta de linq.

Ejemplo: si quisiera todos los nombres de empleados para aquellos que comenzaron antes de hoy, haría algo como esto en SQL:

SELECT EmployeeNameColumn FROM EmployeeTable WHERE StartDateColumn.Date <= GETDATE() //Today

¿Pero qué hay de linq?

DateTime startDT = //Today var EmployeeName = from e in db.employee where e.StartDateColumn <= startDT

El DONDE anterior no funciona:

Detalles de la excepción: System.NotSupportedException: el miembro de tipo especificado ''Fecha'' no es compatible con LINQ to Entities. Solo se admiten inicializadores, miembros de entidades y propiedades de navegación de entidades.


.Fecha no funcionó, pero .Day hizo por mí.

var query = from o in Payments where o.Order.OrderDate.Day != o.PaymentDate.Day orderby o.Order.OrderDate select new { o.Order.OrderID, o.Order.OrderDate, o.PaymentDate, o.Order.FirstName, o.Order.LastName, o.Order.CustomerID }; query.Dump();


Eso debería funcionar. ¿Estás seguro de que no hay otra parte de la consulta que activó la excepción? Tengo varias instancias de consultas de la forma

var query = from e in db.MyTable where e.AsOfDate <= DateTime.Now.Date select e;

en mi código


Estoy usando un LinqDataSource y tuve problemas para que mi consulta con una Comparación de fechas se ejecute sin errores. La respuesta es usar la función WhereAddParameters y agregar el valor de prueba como un parámetro fuertemente tipado.

Vea el ejemplo a continuación donde estoy haciendo coincidir un groupid y verificando si el StopDate en mi registro es mayor o igual a un sello de fecha / hora de ahora.

Estoy usando este fragmento de código actualmente y funciona como un encanto.

LinqCampaigns.WhereParameters.Add("StopDate", System.Data.DbType.Date, DateTime.Now.ToString()) LinqCampaigns.Where = "GroupId = " & myGrp & " && " & "StopDate >= @StopDate"

Funciona de maravilla....


No puedes usar .Fecha

Si desea verificar hoy, puede crear una fecha y hora sin tiempo

DateTime myDate = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day); var e = (from mds in myEntities.Table where mds.CreateDateTime >= myDate select mds).FirstOrDefault();


Puede ser debido a la fecha en la base de datos que puede contener nulos. Prueba esto:

var EmployeeName = from e in db.employee where e.StartDateColumn.Value <= startDT


Puede verificar la condición de esta manera

var nextDay = DateTime.Today.AddDays(1); var query = from e in db.MyTable where e.AsOfDate >= DateTime.Today && e.AsOfDate < nextDay select e;

aquí obtendrás los registros en la fecha de AsOfDate mientras revisamos entre hoy (00:00:00) y mañana (00:00:00) obtendremos el registro de la fecha de hoy solo en lo que pueda ser el momento ...


Tengo curiosidad por el mensaje de error que dice ''Date'' , cuando estás pasando un ''DateTime'' . ¿Podría ser que ''StartDateColumn'' es realmente una ''Date'' , en lugar de un ''DateTime'' en la base de datos? Eso podría estropear la comparación ...



asegúrese de verificar el valor nulo así:

''(from mm in _db.Calls where mm.Professionnal.ID.Equals(proid) && mm.ComposedDate.HasValue && (mm.ComposedDate.Value >= datemin) && (mm.ComposedDate.Value <= date) select mm).ToArray();''


prueba esto:

DateTime dd = DateTime.Parse("08/13/2010 00:00:00"); var data = from n in ContributionEligibilities where n.ModifiedDateTime.Date >= DateTime.Parse("08/13/2010").Date select n; data.Dump("Result") ;


use una variable local para almacenar el valor de Fecha y luego use esa variable en la consulta:

DateTime today = DateTime.Now.Date; from scheme in context.schemes where scheme.EndDate > today select scheme