【问题标题】:Dynamic LINQ: Compare date between today and four weeks ago动态 LINQ:比较今天和四个星期前的日期
【发布时间】:2013-03-31 23:49:38
【问题描述】:
BETWEEN CAST(GETDATE() AS DATE) AND DATEADD(WEEK, 4, CAST(GETDATE() AS DATE))

这就是你在 mssql 中的做法。我如何使用动态 linq(或其他任何名称 - 不是 C#,而是字符串)来做到这一点。

我将不胜感激。

【问题讨论】:

  • 你是什么意思“动态 linq(不管它叫什么 - 不是 C#,而是字符串”?
  • 我认为它的意思是 "from a in b" 而不是 b.Where(a => ...)
  • @Chris,你的问题很难理解,很少有人愿意回答也就不足为奇了。 LINQ 是 C# 的东西(我在下面回答的假设是您想要 C# 答案,但它不在您的标签中,并且您说“不像 C#”,所以不清楚您是否使用了错误的术语或做出了不正确的假设.
  • 欢迎来到 Stackoverflow!提问时,无需在标题中添加标签。请参阅meta.stackexchange.com/q/19190 讨论为什么不需要它们。
  • @harriyott 你没听说过动态 LINQ。这是一回事。而不是传递一个委托,而是将一个字符串传递给定义过滤器的运算符,例如 Where,而不进行类型检查。

标签: c# .net sql linq datetime


【解决方案1】:

我假设这是 C#。

如果是这样,您可能正在寻找这样的东西:

var theDate = {some date};
if (theDate <= DateTime.Today && theDate >= DateTime.Today.AddDays(-4 * 7))
{
    // stuff goes here
}

就 LINQ 而言,这实际上取决于您要做什么,但这应该会给您一个大致的思路:

var foos = from foo in SomeQueryable
    where foo.Date <= DateTime.Today
    && foo.Date >= DateTime.Today.AddDays(-4 * 7)
    select foo;

【讨论】:

  • 很抱歉我的问题有点难以理解,但这正是我要找的,所以谢谢!
【解决方案2】:

如果您只需要知道如何在 C# 中比较日期,那么:
创建扩展:

public static DateTime AddWeeks(this DateTime date, int weeks)
{
    return date.AddDays(7*weeks);
}

在 Linq 中也是如此:

var now = DateTime.Now;
whatever.Where(d => now.AddWeeks(-4) < d && d < now)

【讨论】:

    【解决方案3】:
    var qryResult =   (from tbl in dbcontext.Yourtable
                          where  tbl.CheckDate >= DateTime.Today  
                 && tbl.CheckDate <=  System.Globalization.CultureInfo.InvariantCulture.Calendar.AddWeeks(DateTime.Today, 4) )
                select tbl 
                ).ToList();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-01-08
      • 2019-03-03
      • 2014-09-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多