传入指定字段名称就可以排序的EF写法
private static IQueryable<T> SetQueryableOrder<T>(this IQueryable<T> query, string sort, string order)
{
if (string.IsNullOrEmpty(sort))
throw new Exception("必须指定排序字段!"); PropertyInfo sortProperty = typeof(T).GetProperty(sort, BindingFlags.Public | BindingFlags.Instance | BindingFlags.IgnoreCase);
if (sortProperty == null)
throw new Exception("查询对象中不存在排序字段" + sort + "!"); ParameterExpression param = Expression.Parameter(typeof(T), "t");
Expression body = param;
if (Nullable.GetUnderlyingType(body.Type) != null)
body = Expression.Property(body, "Value");
body = Expression.MakeMemberAccess(body, sortProperty);
LambdaExpression keySelectorLambda = Expression.Lambda(body, param); if (string.IsNullOrEmpty(order))
order = "ASC";
string queryMethod = order.ToUpper() == "DESC" ? "OrderByDescending" : "OrderBy";
query = query.Provider.CreateQuery<T>(Expression.Call(typeof(Queryable), queryMethod,
new Type[] { typeof(T), body.Type },
query.Expression,
Expression.Quote(keySelectorLambda)));
return query;
}
科普:扩展方法。必须是静态的而且开头的第一个参数是某种类型前面加入this
传入指定字段名称就可以排序的EF写法的更多相关文章
- MySQL按指定字段自定义列表排序
亲测实例: 1级排序:同城>异城 2级排序:未领养>以领养 3级排序:发布最新靠前 MYSQL语句如下: SELECT ura.id,ura.city,ura.uid,ura.rescue ...
- 黄聪:MySQL 按指定字段自定义列表排序
问题描述 大家都知道, MySQL 中按某字段升序排列的 SQL 为 (以 id 为例, 下同): SELECT * FROM `MyTable` , , , ) ORDER BY `id` ASC ...
- MySQL 按指定字段自定义列表排序
问题描述 大家都知道, mysql 中按某字段升序排列的 SQL 为 (以 id 为例, 下同): SELECT * FROM `MyTable` WHERE `id` IN (1, 7, 3, 5) ...
- java list按照 对象 指定多个字段属性进行排序
ListUtils.Java---功能类 package PjectUtils; import java.lang.reflect.Field; import java.text.NumberForm ...
- java list按照元素对象的指定多个字段属性进行排序
ListUtils.java---功能类 package com.enable.common.utils; import java.lang.reflect.Field;import java.tex ...
- C#NPOI.RabbitMQ.EF.Attribute.HttpRuntime.Cache.AD域.List<T>根据指定字段去重.前端JQuery.Cache.I18N(多语言).data-xx(自定义属性)
使用NPOI 操作Excel 个人使用的电脑基本默认安装Excel 操作起来 调用Excel的组件便可.如果是一台服务器.没有安装Excel,也就无法调用Excel组件. 在此推荐第三方插件.NPOI ...
- sort排序,按指定字段进去重,sort -t "^" -k 8 -su,ls给文件名中数字排序sort -k1.5n,Tab符要转义
sort sort 命令对 File 参数指定的文件中的行排序,并将结果写到标准输出.如果 File 参数指定多个文件,那么 sort 命令将这些文件连接起来,并当作一个文件进行排序. sort语法 ...
- C#获取EF实体对象或自定义属性类的字段名称和值
在年前上班的时候遇到了一个问题是这样描述的:我前台设计一个页面,是标签和文本框,当用户修改了哪个文本框的值,将该修改前的值.修改后的值,该值对应的字段,该值对应的行id获取到保存到数据库的某张表里.现 ...
- 开发笔记:基于EntityFramework.Extended用EF实现指定字段的更新
今天在将一个项目中使用存储过程的遗留代码迁移至新的架构时,遇到了一个问题——如何用EF实现数据库中指定字段的更新(根据UserId更新Users表中的FaceUrl与AvatarUrl字段)? 原先调 ...
随机推荐
- Boost Python学习笔记(一)
开发环境搭建 下载源码 boost_1_66_0.tar.gz 生成编译工具 # tar axf boost_1_66_0.tar.gz # cd boost_1_66_0 # yum install ...
- How to generate rtabmap with a Realsense D435 or Xtion Pro Live?(如何使用Realsense D435或者Xtion Pro Live生成rtabmap?)
Ubuntu16.04,ROS kinetic 1.在ROS中安装rtabmap_ros包 sudo apt-get install ros-kinetic-rtabmap-ros 2. RGB-D相 ...
- Codeforces Round #520 (Div. 2)B(贪心,数学)
#include<bits/stdc++.h>using namespace std;int mi[100007];int main(){ int cnt=0; int flag=0; i ...
- 清北刷题冲刺 10-30 a.m
星空 #include<iostream> #include<cstdio> using namespace std; int n,m; int main(){ freopen ...
- java 正则简单使用
查找是否包含字串 查询是否包含 #{name} 片段 这里有包含所以返回true String context = "select * from t_user where (name = # ...
- BZOJ 2973 石头游戏 矩乘加速递推
FFFFFFF,看了一上午才看懂,又调了一中午.....我终于明白为何自己如此菜了qwq 这个题加速的思路是:因为每个序列的长度小于6,他们的lcm是60,所以六十次以后就会回到原来的序列. 加速的就 ...
- 练习十一:兔子数量计算—斐波那契实例
题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子, 假如兔子都不死,问每个月的兔子总数为多少? 通过数学分析我们知道,兔子的规律为数列1,1,2 ...
- RN 从上手到“放弃”
RN 从上手到"放弃" 前言: react-native,相对于最近
- win7,docker安装后,创建虚拟机分配不了ip错误 err: exit status 255
问题 win7装docker真麻烦,不如家里的win10爽.另外明明这是个很简单的操作,但是国内的解决方法有点落后,所以我写了个傻瓜式的. 有兴趣的可以直接看issue https://github. ...
- 安装xenserver过程中出现的问题
运行环境:win10系统,神舟战神z7m-KP7GT型号笔记本,VMWare虚拟机,XenServer7.2.0,XenCenter7.2.0 5月22日下午安装上xenserver虚拟机,发现虚拟机 ...