在选择子句 linq 中添加年份

本文关键字:添加 linq 选择 子句 | 更新日期: 2023-09-27 18:25:36

 var query =
            from u in this.Manager.GroupRecipients
            join sz in this.Manager.Sub
            on u.OD_ID equals sz.OD_Id into grpjoin
            join z in this.Manager.Users
            on u.ID equals z.ID
            join m in this.Manager.Order_Details1
            on u.OD_ID equals m.OD_Id
            join o in this.Manager.Orders
            on m.OrderId equals o.OrderId
            join p in this.Manager.Products
            on m.ProductId equals p.ProductId
            from sz in grpjoin.DefaultIfEmpty()
            where u.CampaignGroupId == groupid
            select new DTO
            {
                FirstName = z.First_Name,
                LastName = z.Last_Name,
                Email = z.Email,
                ProductName = p.Name,
                PurchaseDate = (DateTime)o.OrderDate,
                ExpiredDate = //stuck

            };

我有此代码,从 select 子句中,我可以通过使用将日期时间转换为订单日期来获得购买日期。但是,我想将过期日期设置为购买后 1 年。有什么办法可以达到结果吗?我试图把这个代码行

ExpiredDate = new DateTime(o.OrderDate).AddYears(1)

但是一个错误,说无法从"系统日期时间"转换为"长">

在选择子句 linq 中添加年份

ExpiredDate = o.OrderDate.AddYears(1)

此调用不会更改原始 o.OrderDate,AddYears返回新的 DateTime。

您的错误是调用一个构造函数的结果,当不存在此类构造函数时,该构造函数应该采用另一个 DateTime 对象。不过,您不需要构造函数调用,因此只需省略它即可。

我认为问题是 DateTime(( 需要很长的时间,而您已经给出了另一个 DateTime 对象。检查日期时间的不同构造函数。你可以简单地说

ExpiredDate = o.OrderDate.AddYears(1);