【发布时间】:2022-01-12 06:07:16
【问题描述】:
我正在创建一个端点以从我的数据库中检索一些数据,我正在尝试在我的前端按功能创建一个自定义订单,以便我可以使用以下方式调用我的端点:
https://someapiurl/api/v1/controller/GetItems?ID=1&OrderBy=Name desc
这是我在端点中的代码:
//This is an example of how I populate my variable which works fine (I have the elements from the database). List is a Iqueryable<ModelName> object.
var list = dbContext.SomeEntity.FindAll...
//Code to get "Name" instead of "Name desc"
var param = orderByQueryString.Split(' ')[0];
if (orderByQueryString.Contains("asc"))
return list.OrderBy(x => param);
else
return list.OrderByDescending(x => param);
通过两次返回,我将按升序排列我的列表。但如果我执行以下代码:
return list.OrderBy(x => x.Name);
或者
return list.OrderByDescending(x => x.Name);
两者都可以正常工作,所以我的问题是,我该怎么做才能在该代码中动态地使用 orderby 元素,因为有时我会发送 Name,有时会发送 Id 或 CreatedDate 或类似的东西。
顺便说一句...我尝试使用 list.OrderBy(param);但我得到了无法从用法错误消息中推断出方法“方法”的类型参数。
【问题讨论】:
-
我收到了无法使用重复问题中答案中的代码翻译的错误消息。我使用 Linq.Dynamic nuget 包解决了这个问题。现在我可以调用 OrderBy("param desc")
标签: c# list linq iqueryable