Iv'e製作了一個列表方法,可以在我的MVC/ASP.NET應用程序中獲取已銷售產品的總量。我需要在List Method中添加一個DateTime參數,告訴它只能獲得前一天銷售的產品。創建一個時間跨度爲24/7的日期時間(每天重複)
此列表的目的是客戶可以看到他前一天賣出的東西以及所售產品的數量。這只是一些銷售統計。
我不確定如何創建從中獲取項目的方法的時間跨度。我正在考慮使用datetime作爲List Method的參數,然後聲明時間範圍。我不知道如何接近,雖然這個..
這是我的IList的方法:
public IList<BestsellersReportLine> DailyBestSellersReport(int billingCountryId = 0,
int recordsToReturn = 5, int orderBy = 1, int groupBy = 1, bool showHidden = false)
{
var query1 = from opv in _opvRepository.Table
join o in _orderRepository.Table on opv.OrderId equals o.Id
join pv in _productVariantRepository.Table on opv.ProductVariantId equals pv.Id
join p in _productRepository.Table on pv.ProductId equals p.Id
select opv;
var query2 = groupBy == 1 ?
//group by product variants
from opv in query1
group opv by opv.ProductVariantId into g
select new
{
EntityId = g.Key,
TotalAmount = g.Sum(x => x.PriceExclTax),
TotalQuantity = g.Sum(x => x.Quantity),
}
:
//group by products
from opv in query1
group opv by opv.ProductVariant.ProductId into g
select new
{
EntityId = g.Key,
TotalAmount = g.Sum(x => x.PriceExclTax),
TotalQuantity = g.Sum(x => x.Quantity),
}
;
switch (orderBy)
{
case 1:
{
query2 = query2.OrderByDescending(x => x.TotalQuantity);
}
break;
case 2:
{
query2 = query2.OrderByDescending(x => x.TotalAmount);
}
break;
default:
throw new ArgumentException("Wrong orderBy parameter", "orderBy");
}
if (recordsToReturn != 0 && recordsToReturn != int.MaxValue)
query2 = query2.Take(recordsToReturn);
var result = query2.ToList().Select(x =>
{
var reportLine = new BestsellersReportLine()
{
EntityId = x.EntityId,
TotalAmount = x.TotalAmount,
TotalQuantity = x.TotalQuantity
};
return reportLine;
}).ToList();
return result;
}
香港專業教育學院創建這些變量的工作,如果這是正確的說不上來?:
DateTime CurrentDay = DateTime.Now;
DateTime PreviousDay = DateTime.Now.AddDays(-1);
DateTime TimeFrame = DateTime.Parse("00:00:00 AM");
阿尼的想法?
謝謝!
//克里斯
你想在哪裏使用TimeSpan? –
Hejsan!我希望該方法能夠在「時間範圍內」獲取項目。這將是在後臺運行的計劃任務,需要在每天結束時執行。因此,如果此方法在當天執行(2014-01-24上午00:00之後),則會在昨天(2014-01-24)的00:00至00:00之間獲得所有產品。然後每天重複這個過程。希望這使得sence – koffe14
好吧,您可以使用DateTime.Now並使用DateTime.Now調用中的年,月和日創建一個新的DateTime,以便在00:00 am之前獲取DateTime。然後使用DateTime.AddDays(-1)獲得第二次約會,並利用這些日子與之比較。或者,使用這種技術創建TimeSpan。如果這是你要求的,我可以嘗試制定一個答案。 –