Итак, насколько я понимаю, вам нужны такие группы, как группы истории в скайпе:
Show messages from: Yesterday * 7 days * 30 days .. etc.
Предположим, у вас есть класс Product с датой и некоторые другие поля, например:
public class Product
{
public DateTime Date { get; set; }
public string ProductName { get; set; }
}
Чем вы можете создать некоторый вспомогательный класс, подобный этому:
public enum ProductGroupEnum
{
Today = 0,
Yesterday = 1,
Last30Days = 30
}
public static class ProductsHelper
{
public static List<Product> GetProductsGroup(ProductGroupEnum group, IEnumerable<Product> products)
{
var daysCount = (int)group;
return products.Where(x => DateTime.Now.Date - x.Date.Date <= new TimeSpan(daysCount, 0, 0, 0)).ToList();
}
}
Вместо enum вы можете указать дату, я думаю, например, DateTime.Now.AddDays (-1).
Потому что, если вам нужна «группа за последние 3 месяца», неправильно использовать 90 дней.
И последний пример кода:
var products = new List<Product>()
{
new Product() {Date = DateTime.Now.AddMinutes(-30), ProductName = "TodayProduct"},
new Product() {Date = DateTime.Now.AddDays(-1), ProductName = "YesteradayProduct"},
new Product() {Date = DateTime.Now.AddDays(-25), ProductName = "LastMonthProduct"}
};
var todayProducts = ProductsHelper.GetProductsGroup(ProductGroupEnum.Today, products);
var yesterdayProducts = ProductsHelper.GetProductsGroup(ProductGroupEnum.Yesterday, products);
Таким образом, «TodayProducts» будет содержать только первые продукты,
но «вчерашние продукты» будут содержать первые два продукта (означает продукты со вчерашнего дня до сегодняшнего дня).
Также вы можете легко использовать вышеуказанный вспомогательный метод «ProductsHelper» в «view» для фильтрации товаров в соответствии с вашими потребностями.
Надеюсь, эта помощь.