Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 什么';这是一种检索一周迄今计算值的算法_C#_Algorithm - Fatal编程技术网

C# 什么';这是一种检索一周迄今计算值的算法

C# 什么';这是一种检索一周迄今计算值的算法,c#,algorithm,C#,Algorithm,该算法需要接受一个日期,然后获取从周一到输入日期的每天的值 编辑: 在数据库中,我存储了一周中每一天的值。我希望能够接受一个日期参数,然后检索从该日期参数所在的星期一到该日期参数的值列表。e、 g 2011年5月5日。从5月2日星期一到5月5日星期四检索每天的值 var DateInput = DateTime.Now; var FromMondayToDate = from dateindex in Enumerable.Range(-7, 7) let TestDate =

该算法需要接受一个日期,然后获取从周一到输入日期的每天的值

编辑:

在数据库中,我存储了一周中每一天的值。我希望能够接受一个日期参数,然后检索从该日期参数所在的星期一到该日期参数的值列表。e、 g 2011年5月5日。从5月2日星期一到5月5日星期四检索每天的值

var DateInput = DateTime.Now;

var FromMondayToDate =
    from dateindex in Enumerable.Range(-7, 7)
    let TestDate = DateInput.AddDays(dateindex)
    let Monday = DateInput.AddDays(-(int)DateInput.DayOfWeek + (int)DayOfWeek.Monday)
    where TestDate >= Monday
    select TestDate;
编辑:看看你的编辑,我的答案让你有了一部分。现在,您有了一个日期列表,可以为其检索值。您现在必须查询数据库,或者最好通过编写等效SQL或使用LINQ to SQL在数据库上运行上述查询。

static IEnumerable days fromMonday(DateTime d)
    static IEnumerable<DateTime> DaysFromMonday(DateTime d)
    {
        var diff = d.DayOfWeek - DayOfWeek.Monday;
        var monday = d.AddDays(-diff).Date;
        for (var day = monday; day < d; day = day.AddDays(1))
            yield return day;
    }
{ var diff=d.DayOfWeek-DayOfWeek.周一; var monday=d.AddDays(-diff).日期; 对于(var日=周一;日
您可以试试这个

public List<DateTime> CreateDateList(DateTime inputDate)
{ 
    List<DateTime> mondayList = new List<DateTime>();
    while(inputDate.DayOfWeek != DayOfWeek.Monday)
    {
        mondayList.Add(inputDate);
        inputDate = inputDate.AddDays(-1);
    }
    return mondayList;
}
公共列表CreateDateList(DateTime inputDate)
{ 
List mondayList=新列表();
while(inputDate.DayOfWeek!=DayOfWeek.Monday)
{
添加(输入日期);
inputDate=inputDate.AddDays(-1);
}
返回星期一名单;
}

根据您需要向前或向后更改AddDays参数,您可以详细说明一下起点吗?我认为
DateTime.DayOfWeek
是一个很好的起点。这似乎基本正确,但有点草率。我希望它的Linq质量更好,如果它只列举它需要的天数,而不是过滤掉两周的范围。而且,它似乎会返回中的日期future@Merlyn,它只过滤从7周前到今天的1周范围(第二个参数是计数,而不是上限)。它不会返回将来的日期,枚举值从-7到0,而不是从-7到+7。哦,没错。看来它应该给出正确的最终范围。