【发布时间】:2020-11-24 09:51:51
【问题描述】:
我尝试过使用 OrderByDescending 和 OrderBy 但是我无法得到正确的结果。
以下是要排序的数据示例:
ol1.SKU = "323";
ol1.SubTotal = 12;
ol2.SKU = "Avante";
ol2.SubTotal = 12;
ol3.SKU = "143";
ol3.SubTotal = 13456;
ol4.SKU = "444";
ol4.SubTotal = 2;
ol5.SKU = "znote";
ol5.SubTotal = 0;
排序后我想要的那种结果:
Output:
ol3
ol2
ol1
ol4
ol5
排序规则:
- 最贵(小计)SKU 优先
- 任何包含字符串 AVANTE 的 SKU
- 所有其他订单项
- Notes(ZNote) 排在最后。
我试过这样,但它没有返回正确的输出。
private List<OrderLine> SortByOrderlines(List<OrderLine> ol)
{
return ol.OrderByDescending(x => x.SubTotal).ThenByDescending(x => x.SKU == "AVANTE").OrderBy(x => x.SKU == "ZNOTE").ToList();
}
【问题讨论】:
-
如果你想搜索包含 avante 的字符串,你可能需要这样做
(x => x.SKU.Contains("AVANTE")) -
你能解释一下吗?结果如何“不正确”?
-
在您的示例中,
ol3出现了两次,而ol4根本没有出现。对吗? -
你的代码有
OrderBy...ThenByDescending...OrderBy。这将持续OrderBy将丢弃之前所做的一切。你可能想要OrderBy...ThenByDescending...ThenBy -
@canton7 我更新了
标签: c# linq asp.net-mvc-4