我得到了一个包含价格(最低,平均,最高)的类的列表。 现在,我要订购列表:
示例:
(unordered: low,avg,high)
{1, 2, 5}
{4, 3, 7}
{2, 5, 6}
{2, 1, 3}
(ordered: low,avg,high)
{2, 5, 6} -> highest difference between low < avg
{1, 2, 5} -> low < avg
{2, 1, 3} -> lowest low while low > avg
{4, 3, 7} -> ...
这可能是一件很容易的事情,但是当我想到时,我会头疼。我尝试使用.OrderBy和.GroupBy,但无法正常工作。
答案 0 :(得分:2)
您可以使用
list.OrderByDescending(x => x.Average - x.Lowest).ThenBy(x => x.Lowest).ToList();
考虑您的课程看起来像
public class price
{
int Lowest {get; set;}
int Average {get; set;}
int Highest {get; set;}
}
现在您要按条件Average - Lowest
订购价格的订单清单
List<Price> prices = new List<Price>();
然后您可以对它进行排序
var sortedList = prices.OrderByDescending(x => (x.Average - x.Lowest)).ThenBy(x => x.Lowest).ToList();
POC:.net fiddle