[方法“Boolean Contains(System.Guid)”不支持转换为 SQL]的解决办法

简介: Guid ClsID = new Guid("d4ee9c52-8d68-4f33-9485-0926281c78ac");IList Ids = WebProduct.GetAllChildByID(ClsID);var query = db.T_Products.Where(p => Ids.Contains((Guid)p.F_ClsID));//这一句编译时无错,但是一执行,就报错 出错信息如下: 方法“Boolean Contains(System.Guid)”不支持转换为 SQL。
Guid ClsID  =   new  Guid( " d4ee9c52-8d68-4f33-9485-0926281c78ac " );
IList
< Guid >  Ids  =  WebProduct.GetAllChildByID(ClsID);
var query 
=  db.T_Products.Where(p  =>  Ids.Contains((Guid)p.F_ClsID)); // 这一句编译时无错,但是一执行,就报错
出错信息如下:
方法“Boolean Contains(System.Guid)”不支持转换为 SQL。

估计是.net现有的linq to sql还无法直接将IList某些类型(比如Guid类型)的Contains方法正确翻译为SQL语句


研究了好久,无意间发现linq的100个官方例子中,有一个用数组实现in语句的例子,也是用Contains做的,于是把IList<Guid>转到Guid[]数组试了下,居然成功了,分享一下

var query = db.T_Products.Where(p => Ids.Contains((Guid)p.F_ClsID));

改为:

var query = db.T_Products.Where(p => Ids.ToArray<Guid>().Contains((Guid)p.F_ClsID));

这样运行时,就能正常得到结果了


转帖请注明出处(网名:菩提树下的杨过/真名:杨俊明 msn:yjmyzy@hotmail.com)
目录
相关文章
|
4天前
|
SQL 监控 安全
Flask 框架防止 SQL 注入攻击的方法
通过综合运用以上多种措施,Flask 框架可以有效地降低 SQL 注入攻击的风险,保障应用的安全稳定运行。同时,持续的安全评估和改进也是确保应用长期安全的重要环节。
36 14
|
27天前
|
SQL BI 数据库
SQL操作的一些基本方法
【10月更文挑战第27天】SQL操作的一些基本方法
32 3
|
27天前
|
SQL 监控 固态存储
SQL优化有哪些方法?
【10月更文挑战第27天】SQL优化有哪些方法?
24 3
|
2月前
|
SQL 存储 数据库
SQL部分字段编码设置技巧与方法
在SQL数据库管理中,设置字段的编码对于确保数据的正确存储和检索至关重要
|
2月前
|
SQL 数据库 索引
SQL语句实现投影连接:方法与技巧详解
在SQL数据库查询中,投影和连接是两个核心概念
|
2月前
|
SQL 移动开发 Oracle
SQL语句实现查询连续六天数据的方法与技巧
在数据库查询中,有时需要筛选出符合特定时间连续性条件的数据记录
|
2月前
|
SQL 存储 Serverless
SQL语句拆分时间字段的技巧与方法
在数据库操作中,经常需要处理时间数据
|
2月前
|
SQL 监控 数据库
SQL语句是否都需要解析及其相关技巧和方法
在数据库管理中,SQL(结构化查询语言)语句的使用无处不在,它们负责数据的查询、插入、更新和删除等操作
|
2月前
|
SQL 关系型数据库 MySQL
如何查看SQL字符编码:详细技巧与方法
在SQL数据库管理中,字符编码对于确保数据的正确性和一致性至关重要
|
2月前
|
SQL 关系型数据库 MySQL
如何确认SQL用了索引:详细技巧与方法
在数据库管理中,索引是提高SQL查询性能的重要手段