C# 实体框架中的LINQ OrderBy首先仅为正值

C# 实体框架中的LINQ OrderBy首先仅为正值,c#,entity-framework,linq,asp.net-core,C#,Entity Framework,Linq,Asp.net Core,是否有一种方法可以使用按价格排序的实体框架从数据库中获取产品,但是如果有一些产品的价格等于0,那么它们应该在最后,而不是开始 这是我的要求: result = await _products.OrderBy(p => p.Price) .Skip((parameters.PageNumber - 1) * parameters.PageSize) //simple pagination here .Take(paramete

是否有一种方法可以使用按价格排序的实体框架从数据库中获取产品,但是如果有一些产品的价格等于0,那么它们应该在最后,而不是开始

这是我的要求:

 result = await _products.OrderBy(p => p.Price)
                .Skip((parameters.PageNumber - 1) * parameters.PageSize) //simple pagination here
                .Take(parameters.PageSize)
                .ToListAsync();
是否可以更改它以实现我的目标?

p.Price p.Price订购)
应通过SQL中的case语句转换为相同的顺序。不确定int.MaxValue,可能需要先将其分配给某个变量


ThenBy也可以工作,但我不确定您的数据库是否能够正确地优化多个“order by”。大多数RDM都会这样做。

使用
.OrderByDescending
?@Sajid我需要从最低价格到最高价格的订单,但价格等于0的产品应该在最后
var a = new[] { 0, 1, 2, 3, 4 };
a.OrderBy(x => x > 0 ? x : int.MaxValue)