Linq EF 根据字符列表排序或List根据列表排序以及Linq查询类型转换
//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)
Linq EF 根据字符列表排序或List根据列表排序以及Linq查询类型转换的更多相关文章
- LINQ&EF任我行(二)--LinQ to Object
(原创:灰灰虫的家http://hi.baidu.com/grayworm)LinQ to Objects是LinQ家庭的核心,其它的LinQ也使用了与LinQ to Objects相同的查询句法.最 ...
- 使用SQL如何把用逗号等字符隔开的字符串转换成列表(转)
如何把用逗号等字符隔开的字符串转换成列表,下面依逗号分隔符为例: 比如有一个字符串,其值为:香港,张家港,北京,上海用SQL把这个字符串转换成列表的方法是: 1.方法一 WITH A AS (SELE ...
- java List递归排序,传统方式和java8 Stream优化递归,无序的列表按照父级关系进行排序(两种排序类型)
当有一个List列表是无序的,List中的数据有parentid进行关联,通过java排序成两种排序类型: 所用的测试列表最顶级无parentid,若为特殊值,修改下判断方法即可. 第一种排序:按照树 ...
- Linq EF 添加数据执行事务处理
在EF4.1的DBContext中实现事务处理(BeginTransaction)和直接执行SQL语句的示例 2012-12-12 10:39 5538人阅读 ...
- 跟我学SharePoint 2013视频培训课程——排序、过滤在列表、库中的使用(10)
课程简介 第10天,SharePoint 2013排序.过滤在列表.库中的使用. 视频 SharePoint 2013 交流群 41032413
- jquery拖拽排序,针对后台列表table进行拖拽排序(超实用!)
现在很多后台列表为了方便均使用拖拽排序的功能,对列表进行随意的排序. 话不多说 ,我在网上找了一些demo,经过对比,现在把方便实用的一个demo列出来,基于jqueryUI.js 先上html代码, ...
- python list列表sort、sorted、reverse排序
列表排序:sort是修改原列表,sorted提供原列表的一个有序副本 li=[2,1,4,5,0]li.sort() #默认从小到大print li结果:[0, 1, 2, 4, 5] li=[2,1 ...
- JAVA实现按列表中元素的时间字段排序
JAVA代码实现按列表中元素的时间字段排序 导语: 工作中遇到一个问题,调用第三方接口返回的数据没有按时间倒序排列,测试说要加,然后在网上找到一个解决办法,这里记录一下 需求: 如下图列表,按生日进行 ...
- java编程排序之内置引用类型的排序规则实现,和自定义规则实现+冒泡排序运用
第一种排序:[冒泡排序]基本数据类型的排序. [1]最简易的冒泡排序.效率低.因为比较的次数和趟数最多. /** * 最原始的冒泡排序. * 效率低. * 因为趟数和次数最多.都是按最大化的循环次数进 ...
随机推荐
- (笔记)CanOpen协议【CanFestival】移植方法 支持VC、QT、STM32
转自http://bbs.21ic.com/icview-878522-1-1.html 前段时间学习了CanOpen协议,到网上下载的CanFestival3-10源码,移植到VC.QT.STM ...
- python获取代码行号
获取行号: def get_file(): print("文件名 :",__file__,sys._getframe().f_lineno) print("函数名: &q ...
- openssl创建自己的CA certificate
Create a Certificate Authority private key (this is your most important key): $ openssl req -new -ne ...
- oracle 11g RAC 在Windows 7下安装
oracle 11g RAC 在Windows 7下安装 完全要参考RAC11gR2OnWindows.pdf 难点总是在Grid Infrastructure 而安装Grid Infrastruct ...
- .net framework 4.0 在 VS2010 安装目录下位置 dotNetFx40_Full_x86_x64.exe在磁盘哪个目录?
.net framework 4.0 在 VS2010 安装目录下位置 dotNetFx40_Full_x86_x64.exe在磁盘哪个目录? 使用VS2010开发应用程序完毕后,在发布应用程序时,常 ...
- linux nginx配置多个网站
1.建立wwwroot(/home/wwwrooot) 另建立一个wwwroot/test/index.html(网站目录) 2.建立vhost文件(/usr/local/nginx/conf/vho ...
- nodejs的__dirname与__filename
__filename变量获取当前模块文件的带有完整绝对路径的文件名:[包含文件名本身的绝对路径] __dirname变量获得当前文件所在目录的完整目录名.[不包含文件名本身的绝对路径] 该方法用于获取 ...
- 怎么用ABBYY在线浏览PDF文件
ABBYY FineReader 让您可以从在线存储服务中打开图像或 PDF 文件,并将已识别文本保存至在线存储服务中,如 Dropbox.SkyDrive 或 Google Drive 等.通过在 ...
- Centos7以上的版本 mysql 无法启动,无法停止问题
service mysqld start 始终提示如下: Failed to issue method call: Unit mysqld.service failed to load: No suc ...
- c++单例设计模式---17
原创博文,转载请标明出处--周学伟 http://www.cnblogs.com/zxouxuewei/ 全局变量在项目中是能不用就不用的,它是一个定时炸弹,是一个不安全隐患,特别是在多线程程序中, ...