2015-07-16 1 views
2

J'ai besoin pour obtenir les sept dernières dates et ajouter -4 heures à chaque jour de ma base de donnéesComment ajouter des heures à ce jour en utilisant la requête LINQ?

Ma requête SQL sera:

select DATEADD(hh, -4, [DateColumn]) 
from mydatabse.dbo.mytable 
where DATEDIFF(dd, DATEADD(hh, -4, [DateColumn]), getdate()) between 1 and 7 
group by DATEADD(hh, -4, [DateColumn]) 

Quelqu'un pourrait-il me aider à convertir cette requête SQL pour LINQ?

+0

double possible de [AddHours à Linq résultat Date] (http://stackoverflow.com/questions/7466464/addhours-to-linq-date-result) – Miki

+0

@Deepa Mani quelle version de '.Net Framework' utilisez-vous? – Mairaj

+0

Salut Mairaj J'utilise .NET 4.5 –

Répondre

3

Je suppose que vous utilisez C#? S'il vous plaît voir si ce qui suit correspond à votre besoin:

using System.Data.Entity.SqlServer; 

from a in mydatabase.mytable 
let d = SqlFunctions.DateAdd("hh", -4, a.DateColumn) 
let e = SqlFunctions.DateDiff("dd", d, SqlFunctions.GetDate()) 
where e >= 1 && e <= 7 
group a by d into g 
select g.Key; 
+0

Salut @ycsun Merci pour votre réponse –

+0

J'ai essayé mais je reçois l'exception ci-dessous –

+0

Informations supplémentaires: LINQ to Entities ne reconnaît pas la méthode 'System.Nullable'1 [System.DateTime] DateAdd (System.String , System.Nullable'1 [System.Double], System.Nullable'1 [System.DateTime]) 'méthode, et cette méthode ne peut pas être traduite dans une expression de magasin. –

0

Qu'est-ce qui semble être le problème? DateTime Type ont AddHours() méthode de sorte que vous pouvez l'utiliser.

Si vous voulez changer la propriété dans votre table, il sera comme ceci:

var entity = context.Table.FirstOrDefault(); // get your entity 
entity.YourDate = entity.YourDate.AddHours(4); //add 4 hours 
context.SubmitChanges(); //Save it to you storage 
+0

Vous ne pouvez pas supposer parce qu'un type a une méthode particulière qu'il fonctionnera avec un 'IQueryable ', mais dans ce cas '.AddHours (double)' devrait fonctionner correctement. – Enigmativity

0

N'a pas compilé juste essayer cette

var yourRecord = DBContext.Table.Where(x => DbFunctions.AddDays(DateTime.Now, -7) <= x.YourDate && x.YourDate <= DateTime.Now).FirstOrDefault(); 
     yourRecord.YourDate = DateTime.Now.AddHours(4);