日期:2014-05-20  浏览次数:20927 次

Linq 如何按时间分组?比较急,望赐教,以后再学基本功!!!
List<AFileTools.Model.ItemDataBase> lst = new List<AFileTools.Model.ItemDataBase>();
lst.Add(new AFileTools.Model.ItemDataBase() { DT = "2010-1-1 20:00:00", Value = "1.1" });
lst.Add(new AFileTools.Model.ItemDataBase() { DT = "2010-1-1 21:00:00", Value = "2.2" });
lst.Add(new AFileTools.Model.ItemDataBase() { DT = "2010-1-2 20:00:00", Value = "3.1" });
lst.Add(new AFileTools.Model.ItemDataBase() { DT = "2010-1-2 21:00:00", Value = "111.1" });


当前数据是年-月-日-小时

如何按 年-月-日 分组,都来看看。
------最佳解决方案--------------------

List<Model.ItemDataBase> lstData = new List<AFileTools.Model.ItemDataBase>();
            lstData.Add(new AFileTools.Model.ItemDataBase() { DT = "2010-1-1 20:00:00", Value = "1.1" });
            lstData.Add(new AFileTools.Model.ItemDataBase() { DT = "2010-1-1 21:00:00", Value = "2.2" });
            lstData.Add(new AFileTools.Model.ItemDataBase() { DT = "2010-1-2 20:00:00", Value = "3.1" });
            lstData.Add(new AFileTools.Model.ItemDataBase() { DT = "2010-1-2 21:00:00", Value = "111.1" });

            IEnumerable<IGrouping<string, string>> query =
                from Data in lstData
                group Data by Data.DT.Substring(0, Data.DT.IndexOf(' ')) into g
                select g.Average(s => float.Parse(s.Value));


------其他解决方案--------------------
linq
            //List<AFileTools.Model.ItemDataBase> lst = new List<AFileTools.Model.ItemDataBase>();
            //lst.Add(new AFileTools.Model.ItemDataBase() { DT = "2010-1-1 20:00:00", Value = "1.1" });
            //lst.Add(new AFileTools.Model.ItemDataBase() { DT = "2010-1-1 21:00:00", Value = "2.2" });
            //lst.Add(new AFileTools.Model.ItemDataBase() { DT = "2010-1-2 20:00:00", Value = "3.1" });
            //lst.Add(new AFileTools.Model.ItemDataBase() { DT = "2010-1-2 21:00:00", Value = "111.1" });

            var query = from q in db.GetList
                        group q by DateTime.Parse(q.DT).ToString("yyyy-MM-dd") into g