使用LINQ语句报错,不支持p.SearchKeyword.Split(',')

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用LINQ语句报错,不支持p.SearchKeyword.Split(',')相关的知识,希望对你有一定的参考价值。

var products = db.Products.Where(p => p.SearchKeyword.Split(',').Contains(keyWord)).ToList();
有一个产品表product,有字段SearchKeyword由逗号隔开的字符串组成,如"鲜花,绿植",我想根据关键字查询,输入一个关键字keyWord,如果Searcheyword字符串中包含该关键字则将该产品选出。不知道有没有描述清楚,求大神帮忙

参考技术A

Linq to SQL或是Entity Framework吗?

因为最后会生成 SQL 语句去数据库查询,而 Split 方法无法翻译为相应的 SQL 函数,所以说不支持。

如果你的输入关键字没有逗号的话,直接用Contains试试。

var products = (from product in db.Products
               where product.SearchKeyword.Contains(keyWord)
               select product).ToList();

追问

使用逗号隔开是为了方便使用关键字查询,相当于给产品多个查询标签,不知道我的思路是否有问题,或者有其他好的解决方案吗?谢谢

参考技术B //这样试试:
var pro=(from p in Products
where p.SearchKeyword.Split(',').ToList().Contains(keyWord)
select p).ToList();

var pro=(from p in Products
where p.SearchKeyword.IndexOf(keyWord)>-1
select p).ToList();本回答被提问者采纳
参考技术C var pro=(from p in Products
where p.SearchKeyword.Split(',').Contains(keyWord)
select p).ToList();

linq中日期格式转换或者比较,程序报错说不支持方法的解决办法

public void TestMethod1()
{
using (var _context = new hotelEntities())
{
var rq = DateTime.Now.Date;
var query = from q in _context.UV_RZJL_RZRY_Single
where SqlFunctions.DateDiff("day",rq,q.LDRQ)>0
select q;
Assert.Inconclusive(query.Count().ToString()); 


}


可以用SqlFunctions,命名空间using System.Data.Objects.SqlClient;

 

以上是关于使用LINQ语句报错,不支持p.SearchKeyword.Split(',')的主要内容,如果未能解决你的问题,请参考以下文章

linq中日期格式转换或者比较,程序报错说不支持方法的解决办法

LINQ体验(18)——LINQ to SQL语句之视图和继承支持

LINQ语句中的.AsEnumerable() 和 .AsQueryable()的区别

如果不支持包含,您如何在 LINQ to Entities(实体框架)中执行 SQL 样式的“IN”语句?

试图在 linq 语句的 where 中调用方法

Linq Distinct报错,急,在线等