首页 > 代码库 > 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 }
- 和sql语句不通,linq中select放到最后(方便类型推断)。
- in后是要进行处理的集合,from后的变量是values中每个元素的变量(联想foreach)。
- select后是查询结果。
- 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
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。