Linq EF 根据字符列表排序或List根据列表排序以及Linq查询类型转换
2024-08-26 05:02:03
//model.BBSCategoryIDList=>{10,23,12}或者{1,3,2}
//model.BBSCategoryIDs=>1,3,2或者10,23,12
//SqlFunctions命名空间System.Data.Objects.SqlClient;是linq中的一些方法整合
//如果model.BBSCategoryIDs是一个字符如1,3,2而不是10,23,33的,那么下面这个linq直接排序是可以实现以1,3,2顺序获取的
model.BBSCategoryNameList = dbContext.BBSCategories.Where(u => model.BBSCategoryIDList.Contains(u.ID)).
OrderBy(u => SqlFunctions.CharIndex(model.BBSCategoryIDs, SqlFunctions.StringConvert((double)u.ID))).Select(u => u.Title).ToList();
上方中linq的排序使用,只能针对char类型排序,而不能针对string,这主要是SqlFunctions.CharIndex方法是char型处理
其中有一个类型转换SqlFunctions.StringConvert((double)u.ID)),像一般的Convert.ToString(u.ID)或者是u.ID.ToString()在linq中是不允许使用的,此时,就需要使用SqlFunctions中的方法进行数据处理了。
因为本次我需要的是根据ID列表进行排序,没办法使用上面的方法,至于是否有能够实现的,暂时还没找到。现在的处理方式如下
List<IDAndTitleDTO> categoryIDTitleList = dbContext.BBSCategories.Where(u => model.BBSCategoryIDList.Contains(u.ID)).Select(u => new IDAndTitleDTO() { ID=u.ID,Title=u.Title}).ToList()
.OrderBy(u=>Array.IndexOf(model.BBSCategoryIDList.ToArray(),u.ID)).ToList();//获取到ID以及Title对象的列表,并且进行列表排序处理
model.BBSCategoryNameList = categoryIDTitleList.Select(u => u.Title).ToList();//最后获取名称列表
因为还没找到办法直接linq查询的时候就把名称列表给排序出来,所以使用list获取后再进行排序的方式进行处理。
Array.IndexOf(model.BBSCategoryIDList.ToArray(),u.ID)
最新文章
- Fedora 24中的日志管理
- 常见寻找OEP脱壳的方法
- 通过分析iframe和无阻塞脚本关系能让我们更懂iframe
- Scrum敏捷项目管理精要
- html 二级联动(省市联动)
- Windows Live Writer代码高亮插件对比
- unity3d magnitude的意义
- 分治法(一)(zt)
- python繁体中文到简体中文的转换
- javascript学习笔记2
- 图论(Tarjan缩点):BZOJ 1194: [HNOI2006]潘多拉的盒子
- SQL后台分页三种方案和分析
- Rect
- 每天收获一点点------Hadoop之初始MapReduce
- Smali文件语法解析
- zookeeper安装及环境变量设置
- linux添加超级管理员用户,修改,删除用户
- intellij idea 编译 kafka 源码
- Unity shader学习之阴影
- 再谈vc发送键盘、组合键消息
热门文章
- (笔记)Linux内核中内存相关的操作函数
- Maven 构建生命周期
- Docker for Mac 安装及Mysql安装使用
- CI框架 -- 网页缓存
- Build opencv libraries for android arm, x86 ubuntu
- 如何使用 OpenFileDialog 组件 (选择文件组件)
- Oracle表明明存在SQL查询数据提示表不存在异常
- 一款CSS3仿Google Play的垂直菜单
- js document.activeElement及使用
- 114自定义UITableViewCell(扩展知识:为UITableViewCell添加动画效果)