おはようございますスタックオーバーフロー、私は過去90日間の製品リストを日付順に並べ替え、効率的な方法で商品をグループ化して日付順に表示する必要があります。 Linq-To-SQLは、日付比較関数の多くを理解していないので、ここで何をすべきかについてちょっと分かりません。MVC2日付で商品をグループ化して表示する
「今日」、「昨日」、「過去30日」のようなタイトルのある同じ日付の商品グループが、それぞれのグループに含まれています。誰でも助けることができますか?私は理解し
おはようございますスタックオーバーフロー、私は過去90日間の製品リストを日付順に並べ替え、効率的な方法で商品をグループ化して日付順に表示する必要があります。 Linq-To-SQLは、日付比較関数の多くを理解していないので、ここで何をすべきかについてちょっと分かりません。MVC2日付で商品をグループ化して表示する
「今日」、「昨日」、「過去30日」のようなタイトルのある同じ日付の商品グループが、それぞれのグループに含まれています。誰でも助けることができますか?私は理解し
だから、あなたはスカイプで歴史グループのようなグループが必要になります。
Show messages from: Yesterday * 7 days * 30 days .. etc.
はこのように、あなたは日付といくつかの他のフィールドを持つクラスの製品を持っていると仮定します。
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();
}
}
列挙型ではなく、Datのように日付を渡すことができますeTime.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」は、第1の1つの製品、 のみが含まれますが、「yesterdayProducts」は、第1の2つの製品(昨日から今日までの製品を意味する)containtます。
また、必要に応じてフィルタリングする製品については、上記の 'ProductsHelper'ヘルパーメソッドを 'view'で簡単に使用できます。
このヘルプが必要です。
ありがとうございます、あなたの列挙の提案は、少なくとも私を得るために十分でなければなりません。 – Gallen