GROUP BY/Case Asp.Net Web API ODATA的不敏感扩展?

Abh*_*eet 5 c# expression-trees odata asp.net-web-api odata-v4

无法在ODATA V4文档中按引用找到组.当我们在URL中通过查询传递组时,它只返回键,而不是实际的分组结果.

关于在Asp.Net ODATA中使用Group by的任何参考,在ODATA Web API的可扩展性点上.我们需要完全掌握如何解析ODATA查询并将其转换为LILNQ到实体查询.

我正在谈论拦截ODATA 查询和执行手动定制的行,例如LINQ to Entities

我正在尝试为Case Sensitivity实现类似的扩展. OData案例Web API中的In-Sensitive过滤?

baH*_*aHI 0

尝试从 SQL 角度来处理它:

  1. 通过分组,您可以准确地获取键和一些聚合值
  2. 通过使用用于组的原始过滤器并使用组键扩展它(原始过滤器和组键匹配),您实际上加载了给定组的数据。

这就是我们的分组网格在 Angular Telerik kendo 中的工作方式(它们有一个很好的 toOdataString 实现。我也扩展了它: https: //github.com/telerik/kendo-angular/issues/2102)。

这种方法确保了网格中固定给定量的组(总组或第一级组)。

PRO:您可以看到所有组(或至少其中 N 个组)

缺点:如果你展开一组,你可能会得到太多的物品;需要大量额外的代码和带有特殊 odata 查询的额外调用;

请参阅:http ://www.reflection.sk/#portfolios ,查看屏幕截图:Universal Plans Services (UPS) Software Bundle(.NET & Angular with KendoUI)

如果从 UI 角度来看:

那么分组只不过是对分组字段进行优先排序的数据列表。这是默认的剑道分组网格方法。因此,他们只是对数据进行排序,获取其页面大小,然后添加分组 UX 项目(网格中的虚拟项目)。

这种方法可确保您在网格中获得固定的项目,但是当您折叠所有项目时,您可能只有 1 个甚至 pageSize 的组数(取决于每个组中是否有/有多少个项目)。请参阅此处: https: //www.telerik.com/kendo-angular-ui/components/grid/grouping/ - 实际上您需要关闭分页才能看到差异。

对于固定数量的项目,这种方法是最快的。每页只需调用一次,但事先无法知道组的数量(如果折叠它们,则可能只是 1 甚至 N,其中 N 是页面大小)。