EF按带字符串的对象的属性的属性排序

时间:2019-01-17 09:36:58

标签: c# entity-framework asp.net-web-api asp.net-core entity-framework-core

我目前正在使用asp.core开发一个api。对于数据访问,我使用延迟加载的实体框架。

示例:

+-------------------+
| Car               |
+-------------------+
| Id       | int    |
+----------+--------+
| Name     | string |
+----------+--------+
| DriverId | int    |
+----------+--------+

+----------------------+
| Driver               |
+----------------------+
| Id          | int    |
+-------------+--------+
| PhoneNumber | string |
+-------------+--------+

DriverId表中的Car是外键。

现在,我想从我的api中获取汽车列表。因此,我想要分页,搜索和排序。我唯一的问题是排序。

默认情况下,应按以下顺序订购它们:

  1. 按Car.Name
  2. 然后按Car.Driver.PhoneNumber
  3. 然后按Car.DriverId
  4. 然后乘Car.Id

但这不是问题。我可以使用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对象的每个属性强烈键入新查询的情况下做到这一点?

谢谢

0 个答案:

没有答案