Search code examples
entity-frameworklinqlinq-to-sqllinq-to-entities

LINQ to Entities does not recognize the method inside the select section


I need to AddYears(2) in the select new ShowRequestsModel. how can I do this? It throws an exception

var requests = (from req in db.PartRequests
                join info in db.UsersInfos on req.UserId equals info.aspnet_UserId
                join prodName in db.Products on req.ProductId equals prodName.Id
                join partRequestStatus in db.PartRequestStatus on req.PartRequestStatusId equals partRequestStatus.Id           
                select new ShowRequestsModel
                {                                                                                                                
                    WarantyExpirationDate = req.PurchasedDate.AddYears(2),
                    IsWarantyExpired = false
                })
                .Sort(sortField, sortBy);

Solution

  • You need DbFunctions class (System.Data.Entity), especially its AddYears() method

    var requests = (from req in db.PartRequests
                join info in db.UsersInfos on req.UserId equals info.aspnet_UserId
                join prodName in db.Products on req.ProductId equals prodName.Id
                join partRequestStatus in db.PartRequestStatus on req.PartRequestStatusId equals partRequestStatus.Id           
                select new ShowRequestsModel
                {                                                                                                                
                    WarantyExpirationDate = DbFunctions.AddYears(req.PurchasedDate, 2),
                    IsWarantyExpired = false
                })
                .Sort(sortField, sortBy);