我有一些样本数据,并试图确定 5 种“最畅销的产品”,然后试图找出 ID#1 的客户在 2013 年 6 月购买了这些产品中的每一种。
我有以下数据结构:
public class MonthlyHistoric
{
public int StoreCode { get; set; }
public int Month { get; set; }
public int Year { get; set; }
public int NumberOfSales { get; set; }
public int ItemCode { get; set; }
}
public class Recipt
{
public int Id { get; set; }
public DateTime SaleDate { get; set; }
public int CustomerID {get;set;}
}
public class ReciptDetails
{
public int Id { get; set; }
public int IdRecipt { get; set; }
public int ItemCode { get; set; }
public int AmountSold { get; set; }
}
我有以下测试数据:
List<MonthlyHistoric> Historic = new List<MonthlyHistoric> {
new MonthlyHistoric() {ItemCode= 101, Month=6, NumberOfSales=20,StoreCode=7,Year= 2013 },
new MonthlyHistoric() {ItemCode= 102, Month=6, NumberOfSales=100,StoreCode=7,Year= 2013 },
new MonthlyHistoric() {ItemCode= 103, Month=6, NumberOfSales=30,StoreCode=7,Year= 2013 },
new MonthlyHistoric() {ItemCode= 105, Month=6, NumberOfSales=20,StoreCode=3,Year= 2013 }};
List<Recipt> Recipts = new List<Recipt> {
new Recipt() { Id = 1, SaleDate = new DateTime(2013, 6, 02), CustomerID =1 },
new Recipt() { Id = 2, SaleDate = new DateTime(2013, 7, 01), CustomerID =1 },
new Recipt() { Id = 3, SaleDate = new DateTime(2013, 6, 04), CustomerID =2 },
new Recipt() { Id = 4, SaleDate = new DateTime(2013, 5, 14), CustomerID =1 },
new Recipt() { Id = 5, SaleDate = new DateTime(2013, 6, 16), CustomerID =2 },
new Recipt() { Id = 6, SaleDate = new DateTime(2013, 6, 12), CustomerID =1 }};
List<ReciptDetails> Details = new List<ReciptDetails> {
new ReciptDetails() { AmountSold = 200, Id = 1, IdRecipt = 1, ItemCode = 101 },
new ReciptDetails() { AmountSold = 234, Id = 1, IdRecipt = 1, ItemCode = 101 },
new ReciptDetails() { AmountSold = 2050, Id = 1, IdRecipt = 2, ItemCode = 101 },
new ReciptDetails() { AmountSold = 20340, Id = 1, IdRecipt = 2, ItemCode = 102 },
new ReciptDetails() { AmountSold = 2300, Id = 1, IdRecipt = 3, ItemCode = 102 },
new ReciptDetails() { AmountSold = 2200, Id = 1, IdRecipt = 3, ItemCode = 103 },
new ReciptDetails() { AmountSold = 200, Id = 1, IdRecipt = 4, ItemCode = 101 },
new ReciptDetails() { AmountSold = 10, Id = 1, IdRecipt = 5, ItemCode = 101 },
new ReciptDetails() { AmountSold = 2400, Id = 1, IdRecipt = 6, ItemCode = 101 }};
使用以下表达式,我可以获得 2013 年第 6 个月商店销售的前 5 种产品(本例中为 #7)
Historic.Where (x => x.StoreCode == 7 && x.Year == 2013 && x.Month== 6).OrderBy (x =>x.NumberOfSales ).Take(5)
现在,对于这 5 个元素中的每一个,我需要找出客户编号 1 在 2013 年第 6 个月购买了多少物品。我必须确定 6 月份签发了哪些收件人,然后检查相关详细信息是否包括顶部之一5 项。
我正在尝试做一个单一的 Linq 表达式。但是多个表达式是一种选择。