gpt4 book ai didi

c# - 用户通过 linq 等选择的日期范围到几周

转载 作者:太空宇宙 更新时间:2023-11-03 16:39:31 26 4
gpt4 key购买 nike

我有一个表单,用户可以选择开始和结束日期来获取数据。尽管用户选择开始和结束日期,但我必须在日期范围内逐周显示表格中的数据。

我的模型很简单

public class DateBetween
public Datetime StartDate{ get;set;}
public Datetime EndDate{ get;set;}

我从数据库中获取这些日期之间的数据列表

IList<Revenue> datas = DB.CreateCrateria(typeof(Revenue))
.Add(Restrictions.Bt("Date", model.startDate, model.endDate))
.List<Revenue>();

public class Revenue
public int Id{ get;set;}
public double Revenue { get;set;}
public Datetime RevenueDate{ get;set;}

例子:

id     Date         Revenue  
1 10/11/2011 554
2 11/10/2011 500

等等

如果用户选择像 6/30/2011 和 10/15/2011 这样的日期

我想展示给用户

 Week         Date                     Avg.Revenue 
Week 1 6/30/2011-7/2/2011 587
Week 2 7/3/2011-7/9/2011 650

...

etc

是否有任何关于聚合函数的建议。在 linq 中

最佳答案

您可以使用手写的 LINQ 或使用此答案:

LINQ query to split an ordered list into sublists of contiguous points by some criteria

示例:只使用普通的 Linq 和 DateTime/Calendar:

var rnd = new Random();
var data = Enumerable.Range(1,100).Select(i => DateTime.Now.AddDays(rnd.Next(-91000,91000)/24));

var calendar = CultureInfo.CurrentCulture.Calendar;
Func<DateTime, int> twoWeeks = dt => (dt.Year * 100) + 2 * (calendar.GetWeekOfYear(dt, CalendarWeekRule.FirstFullWeek, DayOfWeek.Sunday) / 2);

var by2weeks = data.GroupBy(twoWeeks);

foreach (var period in by2weeks.OrderBy(g => g.Key))
{
Console.WriteLine("{0}: {1}", period.Key, string.Join(", ", period));
}

对于 C# 3.5 及更早版本 string.Join(", ", period)

string.Join(", ", period.Select(o => o.ToString()).ToArray())

关于c# - 用户通过 linq 等选择的日期范围到几周,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8112800/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com