首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用linq将字段存储为字符串,但包含由分隔符分隔的项

如何使用linq将字段存储为字符串,但包含由分隔符分隔的项
EN

Stack Overflow用户
提问于 2019-12-17 10:07:21
回答 5查看 764关注 0票数 1

例如。在这个表中,我想搜索使用'c‘而不是'c#’或'c++‘的项。标签由空格分隔。

代码语言:javascript
运行
复制
ID  |  BookName              |  Tags 

1   |  C++ Primer            | c++ 
2   | .NET Core 3.1 Tutorial | c# .net
3   | Beginner Tutorial      | c c# c++

每一本书的记录都可以用多个标签标记,如果我使用

dbContext.Book.Where(a => a.Tags.Contains("c")).ToList()

我会把他们都找来的。但我只想得到初级教程。因为我不能使用=过滤标签字段。我怎么才能解决这个问题?

PS:我也不能改变这张桌子的结构。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2019-12-17 10:39:06

您需要首先使用空格Split标记,然后才能使用ContainsAny

通过使用Contains进行此操作

代码语言:javascript
运行
复制
var result = dbContext.Book.Where(a => a.Tags.Split(' ').Contains("c"));

通过使用Any进行此操作

代码语言:javascript
运行
复制
var result = dbContext.Book.Where(a => a.Tags.Split(' ').Any(t => t.Equals("c")))

这些会给你预期的结果。

您也可以检查difference-between-contains-and-any-in-linq

票数 2
EN

Stack Overflow用户

发布于 2019-12-17 10:21:40

您可以在分隔符(在您的例子中是空格)上拆分标记字段,并验证标签是否存在。例如

代码语言:javascript
运行
复制
var result = dbContext.Book.Where(a => a.Tags.Split(' ').Contains("c"));
票数 2
EN

Stack Overflow用户

发布于 2019-12-19 07:08:45

代码语言:javascript
运行
复制
var result = dbContext.Book.Where(a => a.Tags.Split(' ').Any(t => t.Equals("c")))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59371845

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档