LINQ to Entities 不识别方法

在使用LINQ to Entities时,遇到ToString()等方法不被识别导致的错误。原因是Linq to Entities尝试将所有操作转换为SQL,而某些方法不受支持。解决方案包括在查询中加入ToList(),提前执行查询并转换为内存中的List,然后应用扩展方法。另外,当需要实现类似`where xx in (1,2,3)`的效果时,可以使用Any()方法代替contains。" 79549795,7413681,HBase读写流程与数据存储详解,"['大数据开发', 'Hbase', '数据存储', '分布式系统', '数据持久化']
摘要由CSDN通过智能技术生成

有时候我们在Select(投影)一些列的时候可能很自然需要使用一些方法,比如下面的代码。

源数据gid是整形的,我们现在需要的结果是转换成string的一个集合,所以在select语句后面使用了ToString(),这在Linq to SQL或者Linq to Object都是没有问题的。但是在Linq to Entities的时候会在运行时报错:LINQ to Entities 不识别方法“System.String ToString()”,无法将表达式转换云云。

 

 

此举据说是为了支持更多种类的数据库。不管出于什么原因不支持,几个地方表现不一致确实让人挺纠结的。不过问题还是得解决。怎么做比较简单呢?请看下面的代码:

 

在这句代码中,使用了Select这个扩展方法,把最后的结果一下子转换成了string,简洁方便。

 

需要注意的地方是中间有个ToList()。如果你不加ToList()直接接上Select扩展方法

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值