我目前正在使用asp.core开发一个api。对于数据访问,我使用延迟加载的实体框架。
示例:
+-------------------+
| Car |
+-------------------+
| Id | int |
+----------+--------+
| Name | string |
+----------+--------+
| DriverId | int |
+----------+--------+
+----------------------+
| Driver |
+----------------------+
| Id | int |
+-------------+--------+
| PhoneNumber | string |
+-------------+--------+
DriverId
表中的Car
是外键。
现在,我想从我的api中获取汽车列表。因此,我想要分页,搜索和排序。我唯一的问题是排序。
默认情况下,应按以下顺序订购它们:
但这不是问题。我可以使用data.OrderBy(x => x.Name).ThenBy(x => x.Driver.PhoneNumber...
但是现在我希望客户可以通过订购汽车(通过查询字符串)来给我财产的名称。
对于Car.Name
属性,这没问题,因为在我订购具有默认代码的汽车之后。我可以这样获得属性:var sortingProp = typeof(Car).GetProperty(sortingPropName);
。然后,我可以按如下属性通过data.OrderBy(x => sortingProp)
进行订购。
现在我的问题是:我该如何让客户给我这样的东西:sorting property name = 'Driver.PhoneNumber'
,然后api应该根据汽车的属性进行排序?是否可以在不为Car
对象的每个属性强烈键入新查询的情况下做到这一点?
谢谢