【问题标题】:how can Calculate difference between two dates (number of days) using linq to entities?如何使用 linq to entity 计算两个日期(天数)之间的差异?
【发布时间】:2020-06-28 20:32:21
【问题描述】:
var worker = from w in db.Distributions
                     join d in db.Distributions on w.WorkerId equals d.WorkerId
                     join p in db.Products on d.ProductId equals p.ProductId

                     select new DataBindingProjection
                     {
                         Date = d.DateTime,
                         ProductName = d.Product.ProductName,
                         DistributedPiece = d.Piece,
                         HowManyDays = db.Distributions.Where(r => DbFunctions.TruncateTime(r.DateTime) == DateTime.Now.Date)
                     };

        dataGridView1.DataSource = worker.ToList();

//我厌倦了这种尝试各种方式,但现在我仍然面临这个错误..System.NotSupportedException:'指定类型成员'日期'在 LINQ to Entities 中不受支持。仅支持初始化程序、实体成员和实体导航属性。 **其中 HowManyDays 是字符串类型变量。 怎么解决? 我想看看:示例——“10 天前”这种类型的答案。

【问题讨论】:

  • 使用 DbFunctions.DiffDays
  • 感谢您最近的回复我尝试了这种方式,但可能有些地方出错了。现在我在您的建议下达到了我的目标。

标签: c# linq


【解决方案1】:

尝试以下解决方案来获取两个日期的日期差:

var days = from items in Vals
            select new
            {
                days = items.maxdate - items.mindate
            };

foreach (var day in days)
{
    Console.WriteLine(day.days.TotalDays);
}

【讨论】:

    【解决方案2】:

    根据那条错误信息,linq 认为Date 属性需要转换为SQL 语句。

    尝试在 linq 语句之前的单独行中更早地声明 DateTime.Now.Date,例如 var nowDate = DateTime.Now.Date,然后在 linq 语句中引用 nowDate 而不是 DateTime.Now.Date

    【讨论】:

    • 之后您可能还有其他问题需要处理,但此答案针对您当前的具体问题。
    猜你喜欢
    • 2010-12-09
    • 1970-01-01
    • 2012-07-09
    • 2023-01-31
    • 1970-01-01
    • 2013-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多