gpt4 book ai didi

c# - 如何使用 orderbydescending 在 linq 中查询?

转载 作者:行者123 更新时间:2023-11-30 19:09:45 28 4
gpt4 key购买 nike

我正在尝试查询数据,结果按降序排列。当我查询时——

StartDate=04/09/2014&EndDate=04/16/2014,

我从 9 号而不是 16 号开始显示结果。我不太清楚这是如何实现的。这是我目前拥有的:

 public HttpResponseMessage Get([FromUri] Query query)
{
var data = db.data_bd.AsQueryable();

int pageSize = 10;

if (query.price_type != null)
{
data = data.Where(c => c.Cover == query.price_type);
}
if (query.endDate != null)
{
data = data.Where(c => c.UploadDate <= query.endDate);
}

if (query.startDate != null)
{
data = data.Where(c => c.UploadDate >= query.startDate);
}


// If any other filters are specified, return records which match any of them:
var filteredData = new List<IQueryable<data_bd>>();

if (!string.IsNullOrEmpty(query.name))
{
var ids = query.name.Split(',');
foreach (string i in ids)
{
filteredData.Add(data.Where(c => c.Name != null && c.Name.Contains(i)));
}
}

if (filteredData.Count != 0)
{
data = filteredData.Aggregate(Queryable.Union);
}

if (!data.Any())
{
var message = string.Format("No data was found");
return Request.CreateErrorResponse(HttpStatusCode.NotFound, message);
}

if (query.startDate != null)
{
data = data.OrderByDescending(c => c.UploadDate >= query.startDate).Take(pageSize);

}

if (filteredData.Count != 0)
{
data = data.OrderByDescending(d => d.UploadDate).Take(pageSize);
}

//return Request.CreateResponse(HttpStatusCode.OK, data);
}

我错过了什么吗?请指教。

最佳答案

你有点偏离这里。首先,如果您对列表重新排序 4 次,前 3 次将是浪费时间。我不确定你的逻辑是什么,所以我会保留它。您需要重新考虑您的过滤逻辑。

其次,您传递给OrderByDescendingFunc 获取 以进行排序;它执行过滤。所以当你这样做时:

data = data.OrderByDescending(c => c.UploadDate >= query.startDate)

如果您的上传日期在查询开始日期之后,则您使用的键为 true,如果在查询开始日期之前,则使用 false。因此,您将获得所有 true,然后是所有 false。您根本没有按日期排序。

要在日期之前订购,您需要执行以下操作:

data.Where(c => c.UploadDate >= query.startDate)
.OrderByDescending(c => c.UploadDate)

这会选择上传日期晚于查询开始日期的所有项目,然后UploadDate 对它们进行排序。

我的建议是首先使用 Where 应用每个过滤器,然后在最后通过 OrderByDescending(c => c.UploadDate) 进行排序(或您计划订购的任何属性(property))。

关于c# - 如何使用 orderbydescending 在 linq 中查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23131743/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com