Linq 如何按时间分组?比较急,望赐教,以后再学基本功!!!

glc20022003 2012-02-03 11:36:58
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" });


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

如何按 年-月-日 分组,都来看看。
...全文
269 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
苦苦的潜行者 2012-02-04
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 glc20022003 的回复:]

忘记说了,是按平均值分组。
[/Quote]
            var query = from q in db.GetList
group q by DateTime.Parse(q.DT).ToString("yyyy-MM-dd") into g
select new {DT=g.Key,Value=g.Average(r=>float.Parse(r.NValue) ) };
dataGridView1.DataSource=query.ToList();
苦苦的潜行者 2012-02-04
  • 打赏
  • 举报
回复
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
select new {DT=g.Key,Value=g.Sum(r=>float.Parse(r.NValue) ) };
dataGridView1.DataSource=query.ToList();


类db
    public class db
{
string dT;
string nValue;

public string DT
{
set { dT = value; }
get { return dT; }
}

public string NValue
{
set { nValue = value; }
get { return nValue; }
}

public static List<db> GetList
{
get
{
return new List<db>() {
new db(){ DT = "2010-1-1 20:00:00", NValue = "1.1" },
new db(){ DT = "2010-1-1 21:00:00", NValue = "2.2" },
new db(){ DT = "2010-1-2 20:00:00", NValue = "3.1" },
new db(){ DT = "2010-1-2 21:00:00", NValue = "111.1" }
};
}
}
}
glc20022003 2012-02-03
  • 打赏
  • 举报
回复
忘记说了,是按平均值分组。
q107770540 2012-02-03
  • 打赏
  • 举报
回复

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));

zzc_king 2012-02-03
  • 打赏
  • 举报
回复
平均值从何而来。。
zzc_king 2012-02-03
  • 打赏
  • 举报
回复
按平均值分组是什么意思?
glc20022003 2012-02-03
  • 打赏
  • 举报
回复
自己搞定了
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.Value by Data.DT.Substring(0, Data.DT.IndexOf(' '));

foreach (IGrouping<string, string> q in query)
{
MessageBox.Show(q.Key);
float avg = q.Average(s => float.Parse(s));
MessageBox.Show(Utils.Utilitys.Round(avg, 1).ToString());
}

8,497

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 LINQ
社区管理员
  • LINQ
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧