使用foreach循环可以遍历List<>的所有元素。现在想查找list中是否含有某个字符串,是否可以使用类似contains的方法?

解决方案 »

  1.   

    List<T> lst=new List<T>();
    List<T> l=lst.FindAll(delegate(T t){return t.name.Contains("a");});
    或使用LINQ
      

  2.   

    list.find(predicate (string) match)中 predicate (string) match如何定义?楼上你懂吗?
      

  3.   

    如果你看不懂委托,或者你可以换个角度来看如:
    下面的代码可能会给你一些启示:
            private void button1_Click(object sender, EventArgs e)
            {
                List<string> myList = new List<string>();
                for(int i = 0; i < 10; i++)
                {
                    myList.Add(i.ToString ());//我给他填充1--10
                }            if (myList.Find(MathChar) != null)
                {
                    MessageBox.Show("有这个元素");
                }
                else
                {
                    MessageBox.Show("没有这个元素");
                }
            }
            private bool MathChar(string str)
            {            if (str.Equals("3"))//这里来判断是否有3这个元素
                    return true;
                else
                    return false;
            }
      

  4.   

    List<string> myList = new List<string>();
                for(int i = 0; i < 10; i++)
                {
                    myList.Add(i.ToString ());//我给他填充1--10
                }
                List<string > test=myList.FindAll(delegate(string  t) { return t.Contains("3") ;});
                if (test !=null )
                {
                    MessageBox.Show("有这个元素");
                }
                else
                {
                    MessageBox.Show("没有这个元素");
                }
    还有就是这种,你选择试试
      

  5.   

    if (test !=null )
                {
                    MessageBox.Show("有这个元素");
                }
    好像应该改为if(test.count !=0){}
      

  6.   


    好像应该改为if(test !=null && test.count !=0){}
      

  7.   

    你仔细想想我的条件和你的条件有什么区别
    你的test.count !=0与我的test !=null有很多的区别吗???
      

  8.   

    list.FindAll(a=>a.Contains("字符串"))
      

  9.   

    <sctipt>alert('test')</script>
      

  10.   

    有很大区别,20楼的才严谨。
    对象为null,与对象包含的集合数量为0是完全不一样的概念。
    你用string试试就知道了,一个string为null,与一个string=""是完全不一样的,否则string类也不用专门弄一个IsNullOrEmpty了
      

  11.   

    可以的
    list.where(p=>p.attr.contains('str'))
    还可以自己写一个扩展方法。。
    传递一个 委托。返回是true 或者false
    想要怎样就怎样
      

  12.   


    如果test.count =0呢?是不是test !=null?
    有这个元素吗?所以应该改为if(test !=null && test.count !=0){}
    并且test !=null应该再前面,因为如果test =null,test.count就会“未将对象实例化”。
      

  13.   

    如果test.count =0呢?是不是test !=null? 
    有这个元素吗? 所以应该改为if(test !=null && test.count !=0){} 
    并且test !=null应该再前面,因为如果test =null,test.count就会“未将对象实例化”。
      

  14.   

    不知道zteclx是不是想看这种用法,不过这不是使用了委托,而是自定义比较器:        class userinfo
            {
                public string userno;
                public string username;
            }
            class UserComparer<T> : IEqualityComparer<T> where T : userinfo
            {            #region IEqualityComparer<T> Members            public bool Equals(T x, T y)
                {
                    return x.username == y.username;
                }            public int GetHashCode(T obj)
                {
                    return obj.username.GetHashCode();
                }            #endregion
            }            List<userinfo> infos = new List<userinfo>();
                infos.Add(new userinfo() { userno = "001", username = "张某" });
                if (infos.Contains(new userinfo() { username = "张某" }, new UserComparer<userinfo>()))
                    MessageBox.Show("找到该用户");
      

  15.   

    对象为null的时候,内存中是没有该对象的分配实体,而如果对象为空的话,内存中是有该对象的分配实体的.
      

  16.   

    using System.Collections;
    using System.Collections.Generic;
    using System.Linq;var list=new List<string>();
                list.Where(x=>{
                    if(x=="")
                    {
                        return true;
                    }
                    else
                    {
                        return false;
                    }
                });
      

  17.   

    突然间发现,Lz你不就想是判断一下有无某个元素吗,为什么要用Find()不是有contains方法吗?
    把问题那么复杂化做什么?
    List<string> myList = new List<string>();
                for (int i = 0; i < 10; i++)
                {
                    myList.Add(i.ToString());//我给他填充1--10
                }
                if (myList.Contains ("3"))//直接这样就ok了
                {
                    MessageBox.Show("有这个元素");
                }
      

  18.   

    我現在用Dictionary<>代替List<>居多。
      

  19.   

    请问,LINQ是什么东东?好像是个命名空间吗?
      

  20.   


    既然有find这个方法,就有它的可用之处,希望你能深入研究一下什么情况下contain失效,只能用find,不要太浮躁了。