我有个字典对象mydictionary_address  里面的类型存放的是<string,string> 举列里面的数据是{abc,7,8,9},{cdb,10,}。等等,现在我想提高效率用linq查询出var LinqValue = from dic in mydictionary_address where (dic.Value.Split(',').Length )> 1 select dic.Value;,意思是查询value大于一个以上的dic,可是每次执行发现取出的都是之前原本全部的数据,并没有过滤掉得到我想要的几个数据,这是为什么?还怎么解决?

解决方案 »

  1.   

                var r = from add in addressDic
                        where add.Value.Split(',').Length > 1
                        select add.Value;
      

  2.   

                Dictionary<string, string> addressDic = new Dictionary<string, string>();
                addressDic.Add("A1", "a,b,c,d,e");
                addressDic.Add("A2", "1,2,3");
                addressDic.Add("A3", "4,5,6");
                addressDic.Add("A4", "1");            var r = from add in addressDic
                        where add.Value.Split(',').Length > 1
                        select add.Value;
      

  3.   

    字典类啊,大概是我没写好。。dictionary类的对象啊 一个key值对应一个value值
      

  4.   

    Dictionary<string, string> addressDic = new Dictionary<string, string>();
       addressDic.Add("A1", "a,b,c,d,e");
       addressDic.Add("A2", "1,2,3");
       addressDic.Add("A3", "4,5,6");
       addressDic.Add("A4", "1");   var r = from add in addressDic
       where add.Value.Split(',').Length > 1
       select add.Value;我这里r的执行结果是
       "a,b,c,d,e"
        "1,2,3"
        "4,5,6"
    不是你想要的结果??
      

  5.   

    你那的确是 ,但我这里却不是这样的结果。我这边等于是把addressDic全部查出来了,没过滤掉
      

  6.   

    很明白啊 就是这个对象,我大概有万条数据,我想提高效率,用linq查询出我想要的value值必须是大于一个以上的,然后把这个对象取出来就可以了
      

  7.   

     mydictionary_address.Add(x, z.ToString()+",");
    .....
    ....
    ....
    var LinqValue = from dic in mydictionary_address where dic.Value.Split(',').Length > 1 select dic.Value;
    你看我的写法也是这样,但是LinqValue得到的count值却是mydictionary_address的全部count 数据一条都没有过滤
      

  8.   

    我代码一帖,调试过很多次,count值一直是字典对象的总count数,完全没过滤
      

  9.   

    DC问一下。8#最后得到的var如何显示?
      

  10.   

    8#最后得到的var如何显示?
      

  11.   

    我是调试中看var r的source的内容看的。。
      

  12.   

         你想怎么显示就怎么显示,下面是变量
      foreach (string l in r)
                {
                    MessageBox.Show(l);
                }