如有个List<string> lst=new List<string>();
我想让它里面有N个相同的值,如:
lst.Add("aa");
lst.Add("aa");
lst.Add("aa");
.......
都是相同的值(字符);
如果发现一个有不同的,就统计下有几个不同的值
如下面:
lst.Add("aa")
lst.Add("aa")
lst.Add("bb")
lst.Add("CC")
lst.Add("aa")
.....
有三个不同的..
如何写一个函数,都是相同的就返回0,如果有不同的就返回lst里面的不同项的值????

解决方案 »

  1.   


    我觉得应该是:“都是相同的就返回1,如果有不同的就返回lst里面的不同项的项数”
      

  2.   

    用一个循环,加个NUM来判断,如果相等于LST.COUNT就输出0否则判断输出几个不同的
      

  3.   

    用 linq 可能是比较好的解决办法。
      

  4.   

    using System;
    using System.Collections.Generic; class A
    {
      static void Main()
      {
        List<string> lst = new List<string>();
        lst.Add("aa"); 
        lst.Add("aa"); 
        lst.Add("bb"); 
        lst.Add("CC"); 
        lst.Add("aa");
        Console.WriteLine(Count(lst));  
      }
      
      static int Count(List<string> p)
      {
        List<string> q = new List<string>();
        foreach (string x in p)
          if (!q.Contains(x)) q.Add(x);
        return q.Count;
      }
    }
      

  5.   

    用泛型方法通用性更好些:
      static int Count<T>(IList<T> p)
      {
        List<T> q = new List<T>();
        foreach (T x in p)
          if (!q.Contains(x)) q.Add(x);
        return q.Count;
      }由于有“类型推断”,调用时仍然可以用 Count(lst)。
      

  6.   

    using System;
    using System.Linq;
    using System.Collections.Generic;class Program
    {
      // 使用泛型接口,也适用于数组等实现了该接口的参数
      static int DistinctCount<T>(IList<T> i)
      {
        return i.Distinct<T>().Count();
      }  static void Main()
      {
        int[] array = new int[] { 1, 2, 2, 1, 2, 2 };
        Console.WriteLine(DistinctCount(array));    List<string> lst = new List<string>();
        lst.Add("aa");
        lst.Add("aa");
        lst.Add("bb");
        lst.Add("CC");
        lst.Add("aa");
        Console.WriteLine(DistinctCount(lst));
      }
    }
      

  7.   


    var q=from item in lst
          group item by item into g
          select new {str=g.key,number=g}
    这样的话,你就可以通过foreach(var m in g)
    {
    console.writeline(g.key);  //查看所有不同的字符
    foreach(var n in number)
    {
    //TODO:这里记录包含的次数
    }
    }
      

  8.   

    为什么非要用List<>,你试试HashTable 
      

  9.   


     List<string> lst = new List<string>();
                lst.Add("aa");
    lst.Add("aa");
    lst.Add("bb");
    lst.Add("CC");
    lst.Add("aa");
    lst.Add("dd");
    lst.Add("dd");
    var s=lst.Intersect(lst);
    if (s.Count() == 1)
    {
        Response.Write("全部相同");
    }
    else
    {
        Response.Write(s.Count().ToString()+"个不同<br/>");
        foreach (string ss in s)
        {
            Response.Write(ss+"<br/>");
        }
    }
      

  10.   

    list<>有个Contains方法 内部实现由valueequals实现