早上好Stack Overflow,我刚刚查看了按日期排序的过去90天的产品列表,需要以有效的方式显示产品,按日期对产品进行分组。 Linq-To-Sql不了解很多日期比较函数,所以我很遗憾在这里做什么。
我想要做的是在div中包含具有相同日期的每组产品,其标题为“今天”,“昨天”或“过去30天”。有人可以帮忙吗?
答案 0 :(得分:1)
所以,据我所知,你需要像Skype这样的历史小组这样的小组:
Show messages from: Yesterday * 7 days * 30 days .. etc.
假设您有类别Product with Date和其他一些字段,如下所示:
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();
}
}
而不是枚举你可以传递日期,我想,比如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);
所以'今天产品'将只包含第一个产品, 但'昨天产品'将包含前两种产品(意味着从昨天到今天的产品)。
此外,您可以在“视图”中轻松使用上述'ProductsHelper'辅助方法,根据您的需要进行产品过滤。
希望得到这个帮助。