如何从数据库中选择以逗号分隔的不同值

本文关键字:分隔 数据库 选择 | 更新日期: 2023-09-27 18:33:27

>我有一个前端,包括数据库中的 2 列、关键字 1 和关键字 2,它们位于一个名为关键字的字段中(用 ,分隔)。现在我有一个搜索屏幕,其中包含一个关键字作为自动完成文本框,现在为了填充它,我需要从数据库中获取单个值,所以我有类似的东西,

Keywords
A
A
A,B
B,C
C,E
D,K

现在为了将它们填充为单个列表项,我需要类似的东西。

Keywords
A
B
C
D
k

因此,前端不包含和复制其中。我在SQL方面不是专家,我知道的一种方法是用类似%entered keywords%从数据库中获取不同的值,并使用LINQ用逗号分隔它们,然后获取不同的值。但这将是一条漫长的道路。

任何建议将不胜感激。

提前谢谢。

如何从数据库中选择以逗号分隔的不同值

也许有点晚了,但另一个答案最终会得到不同的关键字:

List<string> yourKeywords= new List<string>(new string[] { "A,B,C", "C","B","B,C" });
var splitted = yourKeywords
    .SelectMany(item => item.Split(','))
    .Distinct();

不过,这不会直接对抗数据库。 在执行 SelectMany 之前,您必须将 DB 内容读入内存,因为 Split 在 SQL 中并不等效。然后它看起来像

var splitted = db.Keywords
   .AsEnumerable()
   .SelectMany(item => item.Split(','))
   .Distinct();

通过使用字符串拆分和 Linq 分组方式获取它们

        List<string> yourKeywords= new List<string>(new string[] { "A,B,C", "C","B","B,C" });
        List<string> splitted = new List<string>();
        yourKeywords.ForEach(x => splitted.AddRange(x.Split(',')));
     var t =   splitted.GroupBy(x => x);