2012-08-15 51 views
2

我似乎畫了一個空白。我有銷售的列表,像這樣檢索:C# - 如何從列表中找到最頻繁的日期

List<Sales> sales = ctn.Sales.Where(s => s.DateSold >= request.FromDate && s.DateSold <= request.ToDate).ToList(); 

的銷售列表中的項目看起來像以下:

SaleID | DateSold | ProductID | ShopID

作爲報告的一部分,我想向用戶返回一個簡單的字符串,通知他們哪一天傾向於賣得最多的那一天。

所以我認爲我應該做的是每天分組銷售,每天計算一次,然後評估哪一個數字最高,但我不確定如何做到這一點。

任何人都可以幫忙嗎?

回答

12

你只需要組由計數DateSold,然後順序(它告訴你項目有多少屬於該組):

salesByDay = sales.GroupBy(s => s.DateSold).OrderBy(g => g.Count()); 
+0

我12秒太晚了:) – SQLMason 2012-08-15 14:55:08

+1

瞭解如果DateSold包含時間戳信息,它們將近乎唯一。您可以通過在DateTime的Date屬性上進行分組來刪除時間戳。 – KeithS 2012-08-15 15:00:40

1

如果您販售項目的確切日期時間爲DateSold,你可能想通過將

from sale in sales 
group sale by sale.DateSold.Date into grouped 
orderby grouped.Count() 
select new {Date = grouped.Key, Count = grouped.Count()}; 
0

採取日期部分和組此將爲您提供最銷售日期:

sales.GroupBy(x => x.DateSold).OrderByDescending(g => g.Count()).FirstOrDefault().Key;

相關問題