Я пытаюсь вызвать функцию во время оператора LINQ, которая явно не может быть переведена в SQL. Вот мой код, я пытаюсь преобразовать дату и время в количество недель. Каков наилучший подход, нужно ли циклически просматривать данные после и обновлять ViewModel?
Контроллер
public ActionResult Listings(string categoryName)
{
HomeServices service = new HomeServices();
return View(service.GetListingsViewModel(categoryName);
}
Просмотр модели
public class ResultsViewModel
{
public System.Guid AdGuid { get; set; }
public Nullable<System.DateTime> ListDate { get; set; }
public string ListingAge { get; set; }
public string Image1 { get; set; }
}
public class ListingsViewModel
{
public IEnumerable<ResultsViewModel> ResultsVM { get; set; }
public int TotalCount { get; set; }
}
Услуга
internal ListingsViewModel GetListingsViewModel(string categoryName)
{
var listings = GetListingsVM(categoryName);
var totalCount = listings.Count();
return new ListingsViewModel()
{
ListingResultsVM = listings,
TotalCount = totalCount
};
}
internal IEnumerable<ResultsViewModel> GetListingsVM(string categoryName)
{
var listings = Listings
.Where(x => x.Category == categoryName)
.Select(x => new ResultsViewModel
{
AdGuid = x.AdGuid,
ListDate = x.ListDate,
ListingAge = Logic.App.GetListingAge(x.BirthDate ?? DateTime.Now),
Image1 = x.ListingImage.Image1
});
return listings;
}
Logic.App
public static string GetListingAge(System.DateTime varListDate)
{
//Function code to convert DateTime to Weeks
return functionReturnValue;
}