在选择子句 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)
但是一个错误,说无法从"系统日期时间"转换为"长">
ExpiredDate = o.OrderDate.AddYears(1)
此调用不会更改原始 o.OrderDate,AddYears
返回新的 DateTime。
您的错误是调用一个构造函数的结果,当不存在此类构造函数时,该构造函数应该采用另一个 DateTime 对象。不过,您不需要构造函数调用,因此只需省略它即可。
我认为问题是 DateTime(( 需要很长的时间,而您已经给出了另一个 DateTime 对象。检查日期时间的不同构造函数。你可以简单地说
ExpiredDate = o.OrderDate.AddYears(1);