【发布时间】:2021-03-19 11:22:46
【问题描述】:
我在 asp.net core v3.1 中运行它
我的问题类似于这个问题:
How to use Linq to check if a list of strings contains any string in a list
与第一个答案相关的具体问题
filterTags = ["abc", "cd", "efg"]
var results = db.People
.Where(p => filterTags.Any(tag => p.Tags.Contains(tag)));
所以基本上是说
给我所有人数据库的结果
谁的标签字段包含任何 filterTags
其中标签 = 由一堆空格分隔的标签填充的大文本字段
这看起来很简单(尤其是因为之前已经写过)
但我得到一个错误返回
System.InvalidOperationException:LINQ 表达式 'DbSet .Where(p => __filterTags_0 .Any(tag => p.Tags.Contains(tag)))' 无法翻译。以可翻译的形式重写查询,或通过插入对 AsEnumerable()、AsAsyncEnumerable()、ToList() 或 ToListAsync() 的调用显式切换到客户端评估
有谁知道这意味着什么或我做错了什么?
【问题讨论】:
-
@TAHASULTANTEMURI - intersect 用于两个列表,而我专门寻找一个列表中的任何内容以显示在长字符串中的某处
-
我指的是下一个,你应该 var People= _db.People.Where(p => p.Tagse.Split(',').ToList().Any(x => filterTags.Contains(x));
-
执行此代码:
List<string> filterTags = new List<string> { "abc", "cd", "efg" }; var results = db.People.ToList().Where(p => filterTags.Any(tag => p.Tags.Contains(tag))).ToList() -
银秋:您的解决方案会将所有数千人从数据库转移到您的本地进程,然后再丢弃其中的大部分。
标签: linq asp.net-core contains any