我在 ASP.NET MVC 应用程序中有一个表,我想使用 AJAX 对其进行排序(服务器端)和过滤。我希望它在其他地方相当容易使用,并且不想将排序和过滤硬编码到查询表达式中,所以我寻找一种动态构建表达式的方法,我发现最好的方法是使用 Dynamic LINQ .
来自如下 URL 的用户输入直接插入到动态 Where 或 OrderBy。
/Orders?sortby=OrderID&order=desc&CustomerName=Microsoft
这将导致两个表达式:
OrderBy("OrderID descending")
Where(@"CustomerName.Contains(""Microsoft"")")
虽然我知道它不会直接扔到数据库中并且在此处插入直接 SQL 将不起作用,因为它不能反映到属性并且它是类型安全的,我想知道是否有人比我更有创意无论如何都可以找到一种利用它的方法。我能想到的一个利用是可以对表中不可见的属性进行排序/过滤,但这并不是那么有害,因为它们仍然不会显示并且可以通过散列来防止。
我允许直接用户输入的唯一方法是使用 OrderBy 和 Where。
只是确保,谢谢:)