以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- [求助]字符串中去重复的问题 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=152080) |
|
-- 作者:2900819580 -- 发布时间:2020/7/8 13:47:00 -- [求助]字符串中去重复的问题 数据库中的C列有以下内容 A|B|C B|C|D C|B|E 代码~~~~~~~~~~~~~~~~~~~~~ cmd.CommandText = "SEL ECT DISTINCT C From {CCC}"
得到的数据是A|B|C|B|C|D|C|B|E 下拉时有重复,如何去重。 想得到的去重后的数据A|B|C|D|E |
|
-- 作者:有点蓝 -- 发布时间:2020/7/8 13:59:00 -- dim lst as new list(of string) for each s as string in sdt.Gevalues("C") if lst.contains(s) = false then lst.add(s) next lst.sort cb.ComboList = string.join("|",lst.toarray())
|
|
-- 作者:2900819580 -- 发布时间:2020/7/8 14:49:00 -- 以下是引用有点蓝在2020/7/8 13:59:00的发言:
dim lst as new list(of string) for each s as string in sdt.Gevalues("C")
if lst.contains(s) = false then lst.add(s)
next
lst.sort
cb.ComboList = string.join("|",lst.toarray())
测试不对,还是有重复的。 加调试代码,弹出提示框都是99,没有去重,循环中的Lst增加 dim lst as new list(of string) MessageBox.Show(sdt.GetValues("C").Count)
for each s as string in sdt.Gevalues("C")
if lst.contains(s) = false then lst.add(s)
next
lst.sort
MessageBox.Show(lst.Count)
cb.ComboList = string.join("|",lst.toarray())
|
|
-- 作者:2900819580 -- 发布时间:2020/7/8 14:51:00 -- 换个方法可以解决;但效率不高!有没有更快捷的方法
cmd.CommandText = "SELEC T DISTINCT C From {CCC}" MessageBox.Show(vss.Split("|").Length) 弹出有2000多个, |
|
-- 作者:有点蓝 -- 发布时间:2020/7/8 15:08:00 -- 没有快捷方法,只能遍历处理
|
|
-- 作者:y2287958 -- 发布时间:2020/7/8 16:06:00 -- cmd.CommandText = "SELEC T DISTINCT C From {CCC}" sdt = cmd.ExecuteReader() Dim vss As String = sdt.GetComboListString("C","","C") Output.Show(String.join(",",vss.split("|").Distinct.ToArray))
|