2015-11-12 4 views
0

У меня есть таблица продуктов, которые имеют Id(int), ProductName(nvarchar50), Quantity(int), Price(double), SubmittedOn(DateTime). У меня есть данные в моей таблице почти 25 продуктов, и у каждого из них есть SubmittedOn дата и время, когда они были введены или сохранены. Теперь я просто хочу, чтобы показать только 10 продуктов, которые недавно добавлены в течение 7 дней на моей домашней странице,Показать последние товары (товары) в mvc asp

Пример: Если 1 продуктов имеет SubmittedOn DATETIME от 11 ноября 2015 года, то я хочу показать это на мою страницу по крайней мере 7 дней, а не после этого, т.е. 17 ноября 2015.

контроллер

public class HomeController : Controller 
{ 
    private Shopping db = new Shopping(); 
    public ActionResult Index() 
    { 
     return View(db.Products.ToList()); 
    } 
} 
+0

может быть, вы можете вставить решение в ответ а и удалите его из вопроса (да, вы можете «ответить на себя»). – BrunoLevy

ответ

2

это? последние 10 добавили продукты

return View(db.Products.OrderByDescending(x => x.SubmittedOn).Take(10).ToList()); 

последних 10 добавили продукты в течение 7-дневного периода

var baselineDate = DateTime.Now.AddDays(-7); 
return View(db.Products.Where(x => x.SubmittedOn > baselineDate).OrderByDescending(x => x.SubmittedOn).Take(10).ToList()); 
+0

Да, это прекрасно работает. но разве нет ничего похожего на сравнение дат? если представленная дата меньше сегодняшней даты? –

+0

Получена ошибка: LINQ to Entities не распознает метод 'System.DateTime AddDays (Double)', и этот метод не может быть переведен в выражение хранилища. –

+0

Это моя ошибка, снова проверьте ответ –

0

********* РЕШЕНИЕ *********

Благодаря @Avsenev Slava

var baselineDate = DateTime.Now.AddDays(-7); 
return View(db.Products.Where(x => x.SubmittedOn > baselineDate).OrderByDescending(x => x.SubmittedOn).Take(10).ToList()); 
Смежные вопросы