首页 > 代码库 > linq练习

linq练习

1             //从字符串数组中将长度小于5的元素返回;2             string[] values = { "tom", "stone", "mikejiekexun", "jim", "tigerwoods" };3             var e1 = from item in values4                      where item.Length < 55                      select item;6             foreach (var s in e1)7             {8                 Console.WriteLine(s);9             }
 1             //一个字符串数组中所有元素都是整数的表示形式 2             //将他们中大于100的以int序列返回; 3             string[] strs = { "1", "25", "250", "388", "99" }; 4             //var e1 = from str in strs 5             //         where Convert.ToInt32(str)>100 6             //         select Convert.ToInt32(str); 7  8             //linq最终都编译成委托,当然可以调用.net函数 9             var e1 = from str in strs10                      let n = Convert.ToInt32(str)//声明临时变量,上述方法的改进11                      where n > 10012                      select n;13             foreach (int i in e1)14             {15                 Console.WriteLine(i);16             }
  1. 和sql语句不通,linq中select放到最后(方便类型推断)。
  2. in后是要进行处理的集合,from后的变量是values中每个元素的变量(联想foreach)。
  3. select后是查询结果。
  4. e1是select结果变量类型是范型的IEnumerable,注意是范型的IEnumerable
 1             //将一个姓名为Key、年龄为value的Dictionary中年龄大于20的 2             //人的姓名用“,”分割打印出来。 3  4             Dictionary<string, int> dict = new Dictionary<string, int>(); 5             dict["tom"] = 30; 6             dict["jim"] = 13; 7             dict["lily"] = 16; 8             dict["you"] = 26; 9 10             var e1 = from name in dict.Keys11                      where dict[name] > 2012                      select name;13             //因为e1是序列,而string.Join要求数组,所以用ToArray转换14             Console.WriteLine(string.Join(",", e1.ToArray()));

 

 取出现次数最多的三个数:

1             int[] values = { 1, 2, 5, 2, 3, 5, 5, 3, 4, 3, 3 };2             var result = from item in values3                          group item by item into g //按照item进行排序,分组的数据用g表示4                          orderby g.Count() descending //根据g中元素的个数进行降序排列5                          select new { 数字 = g.Key, 次数 = g.Count() }; //生成匿名类,以g的key(也就是item)初始化类的"数字"属性,以g的元素个数初始化类的"次数"属性6             foreach (var item in result.Take(3))//result.Take(3)是取出结果集前三个7             {8                 Console.WriteLine(item.数字 + "=" + item.次数);9             }//输出3=4  5=3 2=2