我现在有一个需求. 就是有一排复选框. 当为勾上的状态下add到List下. 当为不勾的时候重List里面移走
我写的方法是
int intIfSave = ldsd.BinarySearch(chkYear.Content.ToString());
if (intIfSave < 0)  
{
     ldsd.Add(chkYear.Content.ToString());//没有时加里}
else
{
     ldsd.RemoveAt(intIfSave);());//有时移除
}但有的时候结果不对, 明明ldsd 里面有值,  还为负数.   不知道为什么.   如果这个不好使. 还有没有别的办法啊(别说自己循环). 
数组都有自动查找了。  list也该有吧

解决方案 »

  1.   

    List<string> ldsd = new List<string>();
                ldsd.Add("a");
                ldsd.Add("b");
                var rets = ldsd.Where(t => t == chkYear.Content.ToString());
                if (rets.Count() > 0) {
                    foreach (var r in rets) {
                        ldsd.Remove(r);
                    }
                }
                else {
                    ldsd.Add(chkYear.Content.ToString());
                }
      

  2.   

    因为你每删除一个集合的count数量就在变化,所以就出现了你所谓的有时删除,判断删除应该从大到小删除才对,从第大的一个索引下标开始判断至第0个。
      

  3.   

    数组未排序,BinarySearch有问题!!
      

  4.   

    使用BinarySearch 必须得排序 吗?  如果这样的话, 还是用
    Contains来判断好了, 他和Contains 是一样来循环整个list .  但是返回的是 bool型
    BinarySearch  返回的是 int 型. 
      

  5.   

    没人喜欢用BinarySearch 他吗?