2013-09-01 33 views
1

我做了这个LINQ查询如何在LINQ查询中按月分组?

var db = new DataEntities(); 
var records = db.Table_1.GroupBy(x => x.date).tolist(); 

其中TABLE_1列的类型都是

ColumnName  dataType 

id    numeric 
date    datetime 

记录TABLE_1的:

1   3/May/2013 
2   4/Apr/2013 
3   7/May/2013 

我想GROUPBY根据TABLE_1的所有记录到几个月像

var records = db.Table_1.GroupBy(x => x.date.Month); 

有没有办法做到这一点?

+2

不它的工作? – xanatos

+0

不,它不工作 –

+3

你会得到什么错误?你在用什么,Entity Framework或LINQ-to-SQL? – xanatos

回答

3

如果您正在使用实体框架可以使用SqlFunctions.DatePart

.GroupBy(x => SqlFunctions.DatePart("m", x.date)) 
+0

它没有给我SqlFunctions.DatePart是否有任何推荐添加 –

+0

谢谢我明白了它的工作原理 –

1

我找到正确的答案,这也可以帮助你......

System.Globalization.DateTimeFormatInfo DFI=new System.Globalization.DateTimeFormatInfo(); 
      var InvoiceDetailMonthwise = (from t in clsGlobalObjectRefrances.SchoolSoulController.Stt.ssspAccInvoiceBook(clsSchoolSoulObjects.OAcdSchoolInfo.SchoolId,clsSchoolSoulObjects.OAcdSchoolInfo.CurrentActiveSessionId) 
              group t by new { t.VDate.Value.Month} 
               into grp 
               select new lcclsInvoiceBook 
               { 
                Month=DFI.GetMonthName(grp.Key.Month).ToString(), 
                Debit = grp.Sum(t => t.DebitAmount) > 0 ? 0 : -(grp.Sum(t => t.DebitAmount)), 
                Credit = grp.Sum(t => t.CreditAmount) > 0 ? (grp.Sum(t => t.CreditAmount)) : 0, 

               }).ToList(); 



      dgvInvoiceBook.DataSource = InvoiceDetailMonthwise;