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子句中,我可以通过使用将Datetime转换为订单日期来获得购买日期。但是,我想将过期日期定为购买后1年。有没有办法实现这个结果?我试图把这个代码行放在
ExpiredDate = new DateTime(o.OrderDate).AddYears(1)
但错误说无法转换为'System.DateTime?' “长”
答案 0 :(得分:3)
ExpiredDate = o.OrderDate.AddYears(1)
此次调用不会更改原始o.OrderDate,AddYears
会返回 new DateTime。
您的错误是调用构造函数的结果,当没有这样的构造函数时,该构造函数应该采用另一个DateTime对象。你不需要构造函数调用,所以只需省略它。
答案 1 :(得分:0)
我认为问题是DateTime()需要一个很长的地方,你给了另一个DateTime对象。检查DateTime的不同构造函数。 你可以简单地说
ExpiredDate = o.OrderDate.AddYears(1);