首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >LINQ to SQL: IQueryable - string contains method不支持转换到SQL

LINQ to SQL: IQueryable - string contains method不支持转换到SQL
EN

Stack Overflow用户
提问于 2011-11-07 08:02:00
回答 2查看 7.2K关注 0票数 4

亲爱的LINQ或linq2sql专家,你能帮我解决这个案子吗?

我有Books,每本书都有一个列表,我想要的是查找作者列表中的作者姓氏包含特定searchAuthor字符串的图书,如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
string searchAuthor = "foo";
IQUeryable books = BookStaticRepository.SelectAll();

books.Where(r => r.Authors.Any(x => searchAuthor.Contains(x.lastname, StringComparison.OrdinalIgnoreCase)));

我得到的是这个错误:

方法“布尔包含( System.String,System.String,System.StringComparison)”不支持转换为SQL.

--我已经尝试了同样的方法,但是使用了IEnumerable,并且使用了。由于性能问题,我不得不转到IQueryable ..。我需要它和IQueryable一起工作。

谢谢你的帮助。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-11-08 08:20:26

嗨,伙计们,谢谢我自己找到了解决办法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
books.Where(r => r.Authors.Any(x => x.lastname.Contains(searchAuthor)));

-I认为的错误-是我在做一种“相反的工作”:我说的是“姓氏必须包含searchAuthor字符串”,而不是反之亦然(姓氏必须包含SearchAuthor字符串.这给了我我期待的结果)。

有趣的是,我在最初的问题中发布的同样的查询在使用IEnumerable时运行良好。

票数 2
EN

Stack Overflow用户

发布于 2011-11-07 08:23:53

这个特定的Contains重载不起作用,但是忽略StringComparison将使其转换为SQL,这将生成一个LIKE %SearchInput%。默认情况下,这将是不敏感的,除非您的DB被设置为大小写感知。

就像这样:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
string searchAuthor = "foo";
IQUeryable books = BookStaticRepository.SelectAll();

books.Where(r => r.Authors.Any(x => searchAuthor.Contains(x.lastname)));
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8039016

复制
相关文章
.NET面试题系列[14] - LINQ to SQL与IQueryable
"理解IQueryable的最简单方式就是,把它看作一个查询,在执行的时候,将会生成结果序列。" - Jon Skeet
s055523
2018/09/14
1.7K0
.NET面试题系列[14] - LINQ to SQL与IQueryable
sql转Linq的工具
这些天写Linq挺烦人的,就上网搜搜可有什么好的sql转Linq的工具,咦,马上就看上了Linqer。
跟着阿笨一起玩NET
2018/09/19
2.6K0
sql转Linq的工具
SQL 转 Linq 备忘录
写SQL的分组统计合作等基本没啥问题,随便出手都解决,但最近用MVC5 写了一个项目,其中的查询统计就不这么容易,因为用了EF进行数据连接处理,所有条件都用linq,当然更重要的是懒得加SQL的调用方法.而LING的统计说难也不难,说易也不易.本来写个12个月的累计合加,,简单地用SQL写了一下
谭广健
2019/01/21
7080
SQL 转 Linq 备忘录
linq to sql初步
1在数据库中设计一个表 2设计一个相关的实体类 注意类名和字段的attribute 代码 using System; using System.Collections.Generic; using System.Linq; using System.Data.Linq; using System.Data.Linq.Mapping; using System.Text; using Life365.Common; namespace Life365.Entity { ///<SUMMARY></
liulun
2022/05/09
4450
linq to sql初步
Linq to SQL 查询Tips
LINQ to SQL当中的灵活的查询操作是其一个很大的优点, 但是当编写较复杂的链接时有时候需要注意一些细节。 1、LINQ to SQL 提供了 DataLoadOptions用于立即加载对象,避免往返访问数据库,提高查询性能。方法包括:      LoadWith 方法,用于立即加载与主目标相关的数据。      AssociateWith 方法,用于筛选为特定关系检索到的对象。        public List<Entity.RoleDataExtend> GetDataExtendByR
张善友
2018/01/19
9990
linq to sql 扩展方法
1、DataContext扩展方法 public static class DataContextExentions { /// <summary> /// 打开连接 /// </summary> /// <param name="dataContext"></param> private static void OpenConnection(this DataContext dataContext)
跟着阿笨一起玩NET
2018/09/19
7560
SQL命令 DROP METHOD
DROP METHOD命令可删除方法。删除方法时, IRIS会将其从已授予该方法的所有用户和角色中撤消,并将其从数据库中删除。
用户7741497
2022/04/25
4910
Linq to sql并发与事务
       为了看起来清晰,我已经事先把所有分类为1产品的价格和库存修改为相同值了。然后执行下面的程序:
跟着阿笨一起玩NET
2018/09/19
6820
由浅入深表达式树(二)遍历表达式树
  为什么要学习表达式树?表达式树是将我们原来可以直接由代码编写的逻辑以表达式的方式存储在树状的结构里,从而可以在运行时去解析这个树,然后执行,实现动态的编辑和执行代码。LINQ to SQL就是通过把表达式树翻译成SQL来实现的,所以了解表达树有助于我们更好的理解 LINQ to SQL,同时如果你有兴趣,可以用它创造出很多有意思的东西来。   表达式树是随着.NET 3.5推出的,所以现在也不算什么新技术了。但是不知道多少人是对它理解的很透彻, 在上一篇Lambda表达式的回复中就看的出大家对Lambd
用户1153966
2018/03/14
1.2K0
由浅入深表达式树(二)遍历表达式树
LINQ via C# 系列文章
LINQ via C# Recently I am giving a series of talk on LINQ. the name “LINQ via C#” is copied from “ CLR via C# ”, one of my favorite books. Currently part 1 – 8 are finished, and the entire series should be 10 parts. The contents are: Introducing LINQ What
张善友
2018/01/30
1.5K1
LINQ to SQL(4):OR设计器
在我们使用LINQ to SQL的时候,需要大量的使用OR设计器,虽然我们手工写代码也是完全可以实现的,但是OR设计器是非常强大的工具,我想有了它,没有几个人会去手工写代码,当然了,手动写代码也是必须的,这一篇我就写几个典型的需要手工写代码的情况 打开和关闭复数形式 默认情况下,OR设计器会将数据库对象从服务器资源管理器拖放到OR设计器上的时候,会自动将ies,s结尾修改为单数形式,这样可以更准确的表示实例化的实体类到单个数据记录的事实,但是某些时候,我们可能会不需要这种效果,这样倒是可能会把我们的代码弄混
小白哥哥
2018/03/07
9280
LINQ to SQL(4):OR设计器
LINQ to SQL(1):基础入门
LINQ to SQL是在SQL SERVER数据库上设置一个强类型化界面的方式,LINQ to SQL提供的方式是目前我所见到查询SQL SERVER最简单也是最有效的方式,他可以使用自定义的类型与数据表甚至存储过程进行对应,而不像我们使用ADO.NET那样,把更多的功夫用在数据类型转换等等的问题上,当程序运行的时候,LINQ to SQL会将我们使用自己的语言定义的模型中的语言继承查询转换为SQL,然后将他在数据库上执行,然后将返回的结果转换为我们自定义的类对象,使用过nhibernate或者ibati
小白哥哥
2018/03/07
1.4K0
LINQ to SQL(1):基础入门
非常帅气的Linq to sql
Linq是.NET 3里新增的东西,我在软件工程课程设计里初步应用到一点,而且主要用在Lambda表达式上,今天算是在好奇心驱动下尝试了一下在数据库方面的应用。
owent
2018/08/01
8210
SQL To LinQ 你知道么?
 学习linQ的时候,你应该用到过LinQ to SQL 的工具---LinQPad,刚开始用,不太熟悉,尤其是涉及到多表查询,不会写LinQ语句怎么办?
令仔很忙
2018/09/14
5840
SQL To LinQ 你知道么?
了解LINQ
实际上,能够被foreach的对象,一定是实现了带有返回值的IEnumerator的GetEnumerator()方法的接口,而.NET内置的该接口则是IEnumerable,一般指的是IEnumerable泛型接口,让我们来看看IEnumerator接口有啥成员:
ryzenWzd
2021/12/14
9040
[方法“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)”不支持转换为 SQ
菩提树下的杨过
2018/01/23
7310
SQL命令 CREATE METHOD(二)
如果指定对方法无效的查询关键字(如CONTAINSID或RESULTS),系统将生成SQLCODE -47错误。 如果指定了重复的查询关键字(例如FINAL FINAL),系统将生成SQLCODE -44错误。
用户7741497
2022/04/14
3660
SQL命令 CREATE METHOD(一)
CREATE METHOD语句创建一个类方法。 这个类方法可能是存储过程,也可能不是。 要在公开为SQL存储过程的类中创建方法,必须指定procedure关键字。 默认情况下,CREATE METHOD不会创建一个同时也是存储程序的方法; CREATE PROCEDURE语句总是创建一个同时也是存储过程的方法。
用户7741497
2022/04/14
4030
SQL函数 STRING
STRING 将一个或多个字符串转换为 STRING 格式,然后将这些字符串连接成一个字符串。不执行大小写转换。
用户7741497
2022/08/01
4260
IQueryable与IEnumberable的区别
转自 http://www.cnblogs.com/fly_dragon/archive/2011/02/21/1959933.html
CherishTheYouth
2019/09/11
5480
IQueryable与IEnumberable的区别

相似问题

ToString() & Contains()不支持转换到SQL

23

LINQ to SQL:“方法'Boolean (System.String)‘不支持转换到SQL。”

24

linq成员不支持转换到SQL。

10

linq to sql ExecuteQuery() as IQueryable

26

此IQueryable<T>扩展方法不支持转换到SQL :(

13
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文