[方法“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));

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏个人随笔

C#编写街道管理系统

项目需求: 一、语言和环境A、实现语言 C#B、环境要求 Visual Studio 2012 二、功能要求 现使用.NET WinForms技术为居委会开发...

4626
来自专栏领域驱动设计DDD实战进阶

领域驱动设计案例之仓储顶层实现

3295
来自专栏游戏杂谈

使用ScriptableObject创建.asset文件

定义为public的变量就存储在xxx.asset中,通过 CommonConfig.Instance.Get 直接获取数据。

1325
来自专栏电光石火

C#解析JSON

使用开源的类库Newtonsoft.Json(下载地址http://json.codeplex.com/)。下载后添加dll引用就能用。 首先添加引用:us...

4655
来自专栏跟着阿笨一起玩NET

树TreeView控件与DataTable交互添加节点(最高效的方法)

本文转载:http://blog.csdn.net/q107770540/article/details/7708418

4191
来自专栏JadePeng的技术博客

使用Mongodb 做对象缓存

mongodb高效的访问速度,用来快速存取数据再合适不过了,缓存神马的,可以用这个的 另外,有的时候,如果仅仅存储几条数据,单独去建立一张表代价太大,这个时候,...

4815
来自专栏跟着阿笨一起玩NET

动态调用WebService

http://linglong117.blog.163.com/blog/static/277145472009127514463/

1991
来自专栏好好学java的技术栈

java爬虫带你爬天爬地爬人生,爬新浪

HttpClient是Apache Jakarta Common下的子项目,可以用来提供高效的、最新的、功能丰富的支持HTTP协议的客户端编程工具包,并且它支持...

1922
来自专栏程序员与猫

Dapper连接与事务的简单封装

1262
来自专栏LeoXu的博客

org.apache.http.client.methods.HttpPost 两种消息体形式 —— UrlEncodedFormEntity 和 StringEntity

使用 UrlEncodedFormEntity 来设置 body,消息体内容类似于“KEY1=VALUE1&KEY2=VALUE2&...”这种形式,服务端接收...

2532

扫码关注云+社区

领取腾讯云代金券