0
|
Rob Burke · 技术社区 · 16 年前 |
![]() |
1
1
服务器层让我们从一些伪代码开始。
重要的是要把操作顺序弄清楚,在这里。某些IQueryable提供程序( 我在看你,实体框架 )如果排序在筛选之前,则将静默地忽略排序。因此,首先生成一个无序的、未过滤的查询,就像上一个问题一样,然后附加筛选,最后附加排序。 请注意,我已经为您的每个可能的过滤器案例的操作添加了一个参数。这是一种方法。另一种方法是,通过迭代查询字符串参数(在请求内部),将任何未被称为“排序”的内容视为一个潜在的筛选器,允许对任何内容进行筛选。您应该选择最适合您的应用程序的内容。 现在,您如何实际实现过滤呢?马克展示的是一种方式。如果你只想过滤某些情况,那就非常有效。显然,我将把它放在一个辅助方法中,而不是放在操作本身中。很有可能您需要重用这个助手和其他操作。但是,如果您打算在一个方法中对更多的行提供筛选,另一种方法是使用Microsoft动态LINQ库,您可以从codeplex中获得该库。这允许您构建一个Linq.where,使用字符串而不是lambda表达式。 浏览器层既然您的应用程序可以处理这个问题,那么您需要一种创建链接的方法,如下所示: http://example.com/Issue/Open?sort=ID&priority=Investigative 例如,如果您有一个过滤器选项菜单,那么每个菜单项将对应一个具有不同查询字符串参数的链接。 这有点棘手,因为在添加新的查询字符串时,您可能希望保留现有的查询字符串参数。例如,如果用户已按ID对打开的问题进行了排序,并选择只筛选调查性优先级问题,那么您仍然希望保留排序。因此,菜单中的所有链接都需要包括当前显示页面的查询字符串参数以及菜单项本身的查询字符串参数。 因此,我们在执行此操作时采用的一般方法是,对于“过滤菜单”(或任何链接您的建筑的项目)中的每个项目:
|
![]() |
2
0
我不完全理解用例-但是您可以通过
等。
你可以通过建立一个
|
![]() |
Rm558 · 是否可以更改XML类型上的LINQPad代码生成? 7 年前 |
![]() |
MJK · 规范模式-使用ICollection实现表达式 7 年前 |
![]() |
Roland Ebner · 为实体框架多对多关系构建表达式树? 7 年前 |