C# EF Core-按类别名称筛选列表-忽略大小写

C# EF Core-按类别名称筛选列表-忽略大小写,c#,linq,entity-framework-core,entity,C#,Linq,Entity Framework Core,Entity,我有以下数据库: 我正在尽可能使用导航属性。我的映射类BookCategory如下所示(我在每个实体中都有集合属性--BookCategories类中的BookCategories属性,以及Categories类中的BookCategories属性): 我想按给定的分类列表获取书籍,而忽略大小写。例如,如果我们有恐怖神秘剧作为输入,我们应该获得恐怖、神秘或戏剧类别的书籍(无论在数据库中它们是恐怖、神秘、戏剧,反之亦然)。我不确定我的想法是否好,以及如何完成它。提前谢谢 public stati

我有以下数据库:

我正在尽可能使用导航属性。我的映射类
BookCategory
如下所示(我在每个实体中都有集合属性--
BookCategories
类中的
BookCategories
属性,以及
Categories
类中的
BookCategories
属性):

我想按给定的分类列表获取书籍,而忽略大小写。例如,如果我们有
恐怖神秘剧
作为输入,我们应该获得恐怖、神秘或戏剧类别的书籍(无论在数据库中它们是恐怖、神秘、戏剧,反之亦然)。我不确定我的想法是否好,以及如何完成它。提前谢谢

public static string GetBooksByCategory(BookShopContext context, string input)
{
      string[] categories = input.Split(' ', StringSplitOptions.RemoveEmptyEntries);
    
      var books = context.Books
                .Where(b => b.BookCategories.Any(bc => String.Equals(bc.Category.Name, ) ));
}

您需要确保您的排序规则配置正确(在数据库中),排序规则决定它是否区分大小写。这与EF无关:)

默认情况下,SQL Server不区分大小写,因此如果您没有更改此选项,则应该可以

然而

排序规则可以在多个级别设置,因此您可能需要检查所有级别:

  • 服务器级
  • 数据库级
  • 列级
以下链接显示了如何检查排序规则:


您可以在此处阅读更多内容:

您需要确保正确配置了排序规则(在数据库中),排序规则决定它是否区分大小写。这与EF无关:)

默认情况下,SQL Server不区分大小写,因此如果您没有更改此选项,则应该可以

然而

排序规则可以在多个级别设置,因此您可能需要检查所有级别:

  • 服务器级
  • 数据库级
  • 列级
以下链接显示了如何检查排序规则:


您可以在此处阅读更多内容:

您接受了一个很好的答案,但您知道如何完成查询本身吗?@GertArnold,不,我不知道。谢谢你的回复@GertArnold,你能帮我一下吗?可能类似于
bc=>categories.Contains(bc.Category.Name)
。你接受了一个很好的答案,但你知道如何完成查询本身吗?@GertArnold,不,我不知道。谢谢你的回复@GertArnold,你能帮我一下吗?可能类似于
bc=>categories.Contains(bc.Category.Name)
public static string GetBooksByCategory(BookShopContext context, string input)
{
      string[] categories = input.Split(' ', StringSplitOptions.RemoveEmptyEntries);
    
      var books = context.Books
                .Where(b => b.BookCategories.Any(bc => String.Equals(bc.Category.Name, ) ));
}