-2

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

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

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

Keywords
A
B
C
D
k

所以前端不包含和复制它。我不是 SQL 方面的专家,我知道的一种方法是使用 like 从 DB 中获取不同的值,%entered keywords%并使用 LINQ 用逗号分隔它们,然后获取不同的值。但这将是一条漫长的道路。

任何建议将不胜感激。

提前致谢。

4

2 回答 2

1

也许有点晚了,但是一个以不同关键字结尾的替代答案:

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();
于 2012-05-05T21:22:47.230 回答
1

通过使用 string split 和 Linq group by 获取它们

        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);
于 2012-05-05T19:50:27.280 回答