gpt4 book ai didi

.net - LINQ到实体: Why can't I use Split method as condition?

转载 作者:行者123 更新时间:2023-12-04 16:57:00 26 4
gpt4 key购买 nike

我有以下LINQ查询:

var aKeyword = "ACT";
var results = from a in db.Activities
where a.Keywords.Split(',').Contains(aKeyword) == true
select a;

关键字是逗号分隔的字段。

每次我运行此查询时,都会出现以下错误:

“LINQ to Entities无法识别方法'Boolean Contains [String](System.Collections.Generic.IEnumerable`1 [System.String],System.String)'”方法,并且该方法无法转换为商店表达式。 ”

我要尝试的替代方法是什么?

最佳答案

为了响应您在大型数据集上的性能考虑,请执行以下操作:

您将要在客户端上进行非索引的通配符字符串匹配,因此,是的,会导致性能下降。

有一个原因为什么您在一个表字段中有多个关键字?您可以对其进行归一化,以创建一个ActivityKeywords表,其中每个Activity都有许多Keyword记录。

Activity (activity_id,.../*删除关键字字段*/)---> ActivityKeywords( Activity ID,keyword_id)->关键字(keyword_id,value)

checkout 非第一范式:http://en.wikipedia.org/wiki/Database_normalization

编辑:同样,即使您坚持使用一列,也有一种方法可以在服务器端执行所有操作(如果您使用严格的语法:'keyword1,keyword2,...,keywordN'):

var aKeyword = "ACT";
var results = (from a in db.Activities
where a.Keywords.Contains("," + aKeyword) || a.Keywords.Contains(aKeyword + ",")
select a;

关于.net - LINQ到实体: Why can't I use Split method as condition?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1354723/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com