我的前端包括2列,关键字1和数据库中的keywords2,它们位于一个名为keywords的字段中(由,分隔)。现在我有一个搜索屏幕,其中有一个关键字作为自动完成文本框,现在为了填充它我需要从DB获取单个值,所以我有类似的东西,
Keywords
A
A
A,B
B,C
C,E
D,K
现在为了将它们填充为单个listItem,我需要类似的东西。
Keywords
A
B
C
D
k
因此前端不包含和复制。我不是SQL的专家,我知道的一种方法就是从DB中获取与%entered keywords%
类似的不同值,并使用LINQ将它们用逗号分隔,然后获取不同的值。但这将是一条漫长的道路。
任何建议都将受到高度赞赏。
提前致谢。
答案 0 :(得分:1)
使用字符串拆分和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);
答案 1 :(得分: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();