例如。在这个表中,我想搜索使用'c‘而不是'c#’或'c++‘的项。标签由空格分隔。
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:我也不能改变这张桌子的结构。
发布于 2019-12-17 10:39:06
您需要首先使用空格Split标记,然后才能使用Contains或Any
通过使用Contains进行此操作
var result = dbContext.Book.Where(a => a.Tags.Split(' ').Contains("c"));通过使用Any进行此操作
var result = dbContext.Book.Where(a => a.Tags.Split(' ').Any(t => t.Equals("c")))这些会给你预期的结果。
发布于 2019-12-17 10:21:40
您可以在分隔符(在您的例子中是空格)上拆分标记字段,并验证标签是否存在。例如
var result = dbContext.Book.Where(a => a.Tags.Split(' ').Contains("c"));发布于 2019-12-19 07:08:45
var result = dbContext.Book.Where(a => a.Tags.Split(' ').Any(t => t.Equals("c")))https://stackoverflow.com/questions/59371845
复制相似问题