[英]Linq query to select records based on most recent sum
我正在編寫一種方法,該方法根據最近的購買總額相等(傳遞給該方法)的組來選擇客戶記錄。 我做了一些搜索,但沒有任何結果可以幫助我實現所需的 output。
customerList.GroupBy(x=> x.CustomerID },
(key, result) =>
{
var orderedList = result.OrderByDescending(c => c.Date).ToList();
return new Customer
{
CustomerID = orderedList.First().CustomerID,
PurchaseID = orderedList.First().PurchaseID,
Price = orderedList.First().Price,
};
});
客戶ID | 采購編號 | 價格 | 日期 |
---|---|---|---|
1 | 11 | 235 | 01-03-2021 |
1 | 12 | 230 | 01-03-2021 |
1 | 14 | 235 | 05-04-2021 |
1 | 15 | 535 | 06-04-2021 |
1 | 16 | 230 | 07-04-2021 |
如果我正在尋找最近 1000 的總購買價格,我應該得到
客戶ID | 采購編號 | 價格 | 日期 |
---|---|---|---|
1 | 14 | 235 | 05-04-2021 |
1 | 15 | 535 | 06-04-2021 |
1 | 16 | 230 | 07-04-2021 |
您可能需要使用累積和生成一個單獨的列表。 然后,您可以使用TakeWhile
來獲取項目,直到達到某些條件
var list = new[] { 1, 2, 3, 4, 5 };
var sum = 0;
var cummulativeSums = list.Select(v => sum += v).ToList();
var result= list.TakeWhile((_, index) => cummulativeSums[index] < 7).ToList();
// 1, 2, 3
或者您可以通過創建中間值對在一個 go 中完成所有操作。
var list = new[] { 1, 2, 3, 4, 5 };
var sum = 0;
var result = list.Select(value => (sum += value, value))
.TakeWhile(pair => pair.Item1 < 7)
.Select(pair => pair.value)
.ToList();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.