簡體   English   中英

在選擇子句linq中添加年份

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM