[英]add year in select clause linq
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?”轉換 “長”
ExpiredDate = o.OrderDate.AddYears(1)
原始o.OrderDate不會被此調用更改, AddYears
返回新的 DateTime。
您的錯誤是由於調用一個構造函數而導致的,該構造函數假定在不存在另一個DateTime對象時會采用該構造函數。 但是,您不需要構造函數調用,因此可以忽略它。
我認為問題是DateTime()期望很長一段時間,您給了另一個DateTime對象。 檢查DateTime的不同構造函數。 你可以簡單地說
ExpiredDate = o.OrderDate.AddYears(1);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.