2010-05-10 5 views
0

Tout ce que je suis après avoir fait est le suivant:Comment puis-je faire cela avec LINQ?

SELECT CallTypeID, Count(CallTypeID) as NumberOfCalls 
FROM [Helpdesk_HR].[dbo].[CallHeader] 
WHERE CallHeader.DateOpened <= GETDATE()-7 
GROUP BY CallTypeID 

dans LINQ. Mais je ne peux pas trouver un moyen de le faire et de le faire fonctionner. J'utiliserais Linqer, mais mon entreprise ne paiera pas pour le moment.

Toute aide est grandement appréciée car je suis sûr que la réponse est évidente. C'est juste un de ces jours aujourd'hui.

Répondre

2

Quelque chose comme ceci:

var callGroups = from ch in CallHeader 
     where ch.YourDate <= DateTime.Now.AddDays(-7) 
     group ch by ch.CallTypeID into grp 
     select new { CallTypeID = grp.Key, Cnt = grp.Count() }; 

Je ne l'ai pas testé si la syntaxe peut être désactivée.

+0

Je travaille avec VB, et j'ai converti la plupart de celui-ci, mais j'ai des problèmes avec le .Key dans la ligne: Sélectionnez Nouveau Avec {.CallTypeID = grp.Key, .Cnt = grp.Count()}. Qu'est-ce qui me manque? – LiamGu

0

Essayez ceci:

var query = from call in context.CallHeader 
      where call.DateOpened <= DateTime.Today.AddDays(-7) 
      group call by call.CallTypeId into grouped 
      select new { CallTypeId = grouped.Key, Count = grouped.Count() }; 

Le bit DateTime.Today peut être légèrement - cela dépend de la façon dont les choses comme les dates sont stockées dans la base de données. Vous voudrez peut-être travailler sur la date avant la requête, puis utilisez simplement "where call.DateOpened <= limit" ou quelque chose comme ça.