我想要实现的是先按OrderSummary
最高顺序排序Amount
,然后依次显示Order
给定帐户的集合中的所有其他内容,而不管Amount
。预期的结果在代码段中。
public class OrderSummary
{
public string FirstName { get; set; }
public decimal Amount { get; set; }
}
public class Worker
{
public List<OrderSummary> Orders { get; set; }
public Worker()
{
Orders = new List<OrderSummary>()
{
new OrderSummary() {FirstName = "James", Amount = 10.00m},
new OrderSummary() {FirstName = "Thomas", Amount = 11.00m},
new OrderSummary() {FirstName = "Leon", Amount = 13.00m},
new OrderSummary() {FirstName = "Lori", Amount = 14.00m},
new OrderSummary() {FirstName = "Thomas", Amount = 16.00m},
new OrderSummary() {FirstName = "Thomas", Amount = 6.00m},
new OrderSummary() {FirstName = "James", Amount = 19.00m}
};
}
//sorted by highest amount first
//then place firstname together regardless of the amount
//Expected Outcome
/*
James 19 -- highest amount followed by all other orders for James regardless of the amount.
* james 10
* thomas 16
* thomas 11
* thomas 6
* lori 14
* leon 13
*/
}
我的方法是获取所有出现多次的元素,然后找到除第一个元素之外的其他元素在哪个索引处,将其从索引中删除,然后将其添加到第一个元素的索引+ 1中。完成这个?
GroupBy
按照它们在源集合中出现的顺序创建组,因此您可以先按数量排序,然后按名称分组,然后“展平”组:
var results = Orders.OrderByDescending(o => o.Amount)
.GroupBy(o => o.FistName) // the groupings will be in order of the largest amount
.SelectMany(g => g); // flatten the groups
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句