2010-05-06 6 views
1

Voici le SQL que je voudrais courir:Comment écrire cette requête SQL moyenne dans LINQ

DECLARE @StartDt DATETIME, @EndDt DATETIME 
SET @StartDt='2009-01-01' 
SET @EndDt='2010-06-01' 

SELECT 
AVG(DATEDIFF(day, CreatedDt, CompletedDt)) 
AVG(DATEDIFF(day, CreatedDt, ComplianceDt)) 
FROM MyTable 
WHERE RequestDt BETWEEN @StartDt AND @EndDt 

Cela peut être exprimé en Linq (C#) et ont tout terme sur la base de données?

Répondre

3
DateTime startDt = new DateTime(2009, 1, 1); 
DateTime endDt = new DateTme(2010, 6, 1); 

var query = dc.MyTables 
    .Where(x => startDt <= x.RequestDate && x.RequestDt <= endDt) 
    .GroupBy(x => 1) //unsure about this group by 
    .Select(g => new 
    { 
    FirstAvg = g.Average(x => 
     SqlMethods.DateDiffDay(x.CreatedDt, x.CompletedDt)), 
    SecondAvg = g.Average(x => 
     SqlMethods.DateDiffDay(x.CreatedDt, x.ComplianceDt)) 
    }); 

var row = query.Single(); 
+0

bien .. mais quel est le problème avec la requête? –

+0

Qu'est-ce qui ne va pas chez les Mongols? –

+0

Wow ... Ne pensez-vous pas que la requête SQL était beaucoup plus facile: -) .... Quoi qu'il en soit, un excellent travail. +1 – Raja

Questions connexes