0

我使用EF 4和C#,MS SQL 2008轉換SQL集團相當於Linq中的實體框架

我有一個T-SQL:

select COUNT(*) 
from CmsContents 
where IsPublished = 1 and isDeleted = 0 
GROUP BY Day(Date) 

我需要將其轉換爲EF,但我無法得到它。

在這裏,我使用的是什麼:

  var contentsByMonth = context.CmsContents 
       .Where(c => c.IsPublished == true & c.IsDeleted == false) 
       .GroupBy(c => c.Date.Month).ToList().Count(); 

你能不能舉個例子?感謝

回答

1
var contentsByMonth = context.CmsContents 
       .Where(c => c.IsPublished == true & c.IsDeleted == false) 
       .GroupBy(c => c.Date.Day) 
       .Select(g => new {Day = g.Key, Counts = g.Count()}) 
       .ToList(); 
+0

我總是忘記Date.Day notsupported時 –

+0

像.GroupBy(C => c.Date.Month)。選擇(G =>新的{g.Count(),c.Date})。ToList ();但不工作..任何想法? – GibboK

+0

我在用EF,SQL 2008回答之後測試了這個,但是c.Date.Day不起作用,所以你可以使用c => SqlFunctions.DatePart(「dd」,c.Date)並引用System.Data。 Objects.SqlClient。在這裏看到更多http://msdn.microsoft.com/en-us/library/system.data.objects.sqlclient.sqlfunctions(VS.100).aspx –