首页 新闻 会员 周边 捐助

ComboBox绑定的时候怎样可以过滤掉重复的Display数据

0
悬赏园豆:10 [已解决问题] 解决于 2012-02-21 11:17
ComboBox绑定的时候怎样可以过滤掉重复的Display数据。
不是在SQL语句里面操作(如果是Distinct和Group By 就算了,我是想在表示层的代码里面过滤。返回的数据源是 List<Tab_Station> stationList)
假如数据如下:(不只是这几条数据)
1    | 标题1
2    | 标题2
3    | 标题3
4    | 标题3
5    | 标题3
只要求一个显示“标题3”
guosongORxiaosong的主页 guosongORxiaosong | 初学一级 | 园豆:102
提问于:2012-02-17 11:02
< >
分享
最佳答案
0

遍历List<Tab_Station> stationList,把不同的保存到另一个列表里,类似下面

ArrayList al = new ArrayList();
          bool flag = true;
            for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
            {
               
                string un = ds.Tables[0].Rows[i]["UserName"].ToString();
                //输出一个值保存就保存到列表中 每次判断输出的值列表中是否已经存在
                if (al.Count > 0)
                {
                    for (int j = 0; j < al.Count; j++)
                    {
                        if (un == al[j].ToString())
                        {
                            flag = false;
                            break;
                        }
                        else
                        {
                            flag = true;
                        }
                    }
                }
                if (flag == true)
                {
                    al.Add(un);
                }
            }
            for (int k = 0; k < al.Count; k++)
            {
                Response.Write(al[k].ToString()+"<br/>");
            }

收获园豆:5
luckydd | 初学一级 |园豆:77 | 2012-02-17 21:13
其他回答(3)
0

这样怎么样

List<TabStation> list = new List<TabStation> {
new TabStation(1,"标题1"),
new TabStation(2,"标题2"),
new TabStation(3,"标题3"),
new TabStation(4,"标题3"),
new TabStation(5,"标题3"),};

var resultList = (from l in list
group l by l.Name into g
select new { name = g.Key }).ToList();
this.comboBox1.DataSource = resultList;
this.comboBox1.DisplayMember = "name";

收获园豆:5
会长 | 园豆:12463 (专家六级) | 2012-02-17 11:45

name 是什么?字段、属性。。。。。

支持(0) 反对(0) guosongORxiaosong | 园豆:102 (初学一级) | 2012-02-17 11:54

@guosongORxiaosong: name是属性名称

支持(0) 反对(0) 会长 | 园豆:12463 (专家六级) | 2012-02-17 13:16

@会长: 我试过了,不行。但是,还是谢谢哈

支持(0) 反对(0) guosongORxiaosong | 园豆:102 (初学一级) | 2012-02-17 16:56

@guosongORxiaosong: 提示什么呀?

支持(0) 反对(0) 会长 | 园豆:12463 (专家六级) | 2012-02-17 17:40

@会长: 没有提示什么,也没有任何数据显示。后来问同事解决了,谢谢会长

 

支持(0) 反对(0) guosongORxiaosong | 园豆:102 (初学一级) | 2012-02-18 09:06
0

用Linq在表示层中过滤掉也可以的。

悟行 | 园豆:12559 (专家六级) | 2012-02-17 12:43

Linq这个东西就简单的了解过,不知道怎么做

支持(0) 反对(0) guosongORxiaosong | 园豆:102 (初学一级) | 2012-02-17 16:56
0

this.cboS_River.ItemsSource = stationList.Distinct(new StationInfoComparer()).ToList();

public class StationInfoComparer : IEqualityComparer<Tab_Station_AllInfo_Info>
    {
        public bool Equals(Tab_Station_AllInfo_Info x, Tab_Station_AllInfo_Info y)
        {
            return x.S_River.Equals(y.S_River);
        }

        public int GetHashCode(Tab_Station_AllInfo_Info obj)
        {
            return obj.ToString().ToLower().GetHashCode();
        }
    }

guosongORxiaosong | 园豆:102 (初学一级) | 2012-02-18 09:29
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册