Sql 如何从给定日期中选择一周中的所有日期?

Sql 如何从给定日期中选择一周中的所有日期?,sql,asp.net-mvc,linq,Sql,Asp.net Mvc,Linq,给定一个日期,我想得到同一周的所有其他日子,一周的开始和结束时间是周六和周五 模型 我现在在做什么 public Contrller{ private db = new ModelContext(); public AddDates(DateTime Date) { List<Model> list = new List<Model>(); int n = 0; while(Date.DayofWeek != DayofWeek.Sa

给定一个日期,我想得到同一周的所有其他日子,一周的开始和结束时间是周六和周五

模型

我现在在做什么

public Contrller{
private db = new ModelContext();

public AddDates(DateTime Date)
{
    List<Model> list = new List<Model>();      
    int n = 0;

   while(Date.DayofWeek != DayofWeek.Sauturday)
   Date = Date.AddDats(-1)  // keep subracting the date until I reach Saturday

   while(Date.DayofWeek != DayofWeek.Friday
  {
     list.Add(Find(Date)); 
    //Simply put for each date not Friday
    // I find the corresponding model (the one with the same date) 
    //and add it to the list 

     Date = Date.AddDays(1)
  }

   list.Add(Find(Date)); // To add the Friday date to list 


  }
公共控制器{
private db=new ModelContext();
公共添加日期(日期时间日期)
{
列表=新列表();
int n=0;
while(Date.DayofWeek!=DayofWeek.Sauturday)
Date=Date.AddDats(-1)//在我到达星期六之前,一直计算日期
while(Date.DayofWeek!=DayofWeek.Friday
{
列表。添加(查找(日期));
//简单地说就是每个日期,而不是星期五
//我找到了相应的型号(日期相同的型号)
//并将其添加到列表中
日期=日期。添加天数(1)
}
list.Add(Find(Date));//将星期五日期添加到列表中
}
注意:不完全是我的代码,只是简化了我的问题

总结我的解决方案:
a) 减去给定日期直到星期六
b) 查找与日期对应的型号
c) 重复,直到我到达星期五
d) 再次添加到列表以包括星期五


是否可以创建一个linq/sql语句来简单地选择所需的模型(关于日期)?

您可以找到一个获取当前星期的示例实现

        List<TimeModel> list = new List<TimeModel>();
        int n = 0;
        for (int i = 0; i < 200; i++)
            list.Add(new TimeModel{ID = i, Day = DateTime.Now.AddDays(-i)});


        var currentDay = new TimeModel() {ID = 0, Day = DateTime.Now};
        var previousSaturday = currentDay.Day.AddDays(-(int)currentDay.Day.DayOfWeek - 1);
        var nextFriday = previousSaturday.AddDays(6);

        var currentWeek = list.Where(p => p.Day.DayOfYear >= previousSaturday.DayOfYear && p.Day.DayOfYear <= nextFriday.DayOfYear).OrderBy(p => p.Day.DayOfYear).ToList();
List List=新列表();
int n=0;
对于(int i=0;i<200;i++)
Add(newtimemodel{ID=i,Day=DateTime.Now.AddDays(-i)});
var currentDay=new TimeModel(){ID=0,Day=DateTime.Now};
var previousSaturday=currentDay.Day.AddDays(-(int)currentDay.Day.DayOfWeek-1);
var nextFriday=上一个星期六。添加天数(6);
var currentWeek=list.Where(p=>p.Day.dayof year>=上一个星期六.dayof year&&p.Day.dayof year p.Day.dayof year).ToList();
        List<TimeModel> list = new List<TimeModel>();
        int n = 0;
        for (int i = 0; i < 200; i++)
            list.Add(new TimeModel{ID = i, Day = DateTime.Now.AddDays(-i)});


        var currentDay = new TimeModel() {ID = 0, Day = DateTime.Now};
        var previousSaturday = currentDay.Day.AddDays(-(int)currentDay.Day.DayOfWeek - 1);
        var nextFriday = previousSaturday.AddDays(6);

        var currentWeek = list.Where(p => p.Day.DayOfYear >= previousSaturday.DayOfYear && p.Day.DayOfYear <= nextFriday.DayOfYear).OrderBy(p => p.Day.DayOfYear).ToList();