随笔分类 - Linq
摘要:当我们用Linq操作我们自定义的对像数组时,我们会发现有些方法直接使用的话根本不起作用,比如:Distinct、Except、Intersect等扩展方法。对于我们自定义的对象的比较,我们必须实现IEqualityComparer接口来判断两个对象的相等性。示例代码如下:using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace lambda{ class Program { static void Main(string[] args) ...
阅读全文
摘要:LINQ的分组功能是通过group by子句实现的。group by的结果是存在一个IGrouping对象中的,含有一个Key/Element对。Key代表的是进行分组的凭据,而Element则是我们需要的数据。static void Main(string[] args){ var nums = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9 }; var result = from n in nums group n by n % 2; foreach (var item in result) { Console.WriteLine(item.Key == 0
阅读全文
摘要:通过orderby关键字,LINQ可以实现升序和降序排序。LINQ还支持次要排序。LINQ默认的排序是升序排序,如果你想使用降序排序,就要使用descending关键字。static void Main(string[] args){ var dicts = new Dictionary<int, string>(); dicts.Add(9, "Jack"); dicts.Add(13, "Tom"); dicts.Add(5, "Tod"); dicts.Add(2, "Alics"); var d
阅读全文
摘要:筛选信息在Linq中可以通过两种方法筛选信息,where和OfType。Where子句大家应该都很熟,OfType是用于筛选能够转换为特定类型的值。static void Main(string[] args) { Object[] objects = new Object[] { 123, "hello", 67.5f, 7M, "six", 89, true }; var intArray = objects.OfType<int>(); foreach (var item in intArray) { Console.WriteLine
阅读全文
摘要:Lambda表达式的演化要了解Lambda表达式,我们首先应从委托说起。.NET中的委托实际上就是C语言中的函数指针,函数通过地址进行引用,只不过.NET中它更加好看了而已。delegate void FunctionPoint(string str); static void printHello(string name){ Console.WriteLine("Hello {0}", name);} static void Main(string[] args){ FunctionPoint fp = printHello; fp("heqichang&quo
阅读全文
摘要:yield向编译器指示它所在的方法是迭代器块。yield并不是.NET中的关键字,所以我们可以将它用于变量名。不过yield return和yield break就是关键词组了。yield returnyield return 是迭代器(Iterator Pattern)模式的一种实现,能够将本身不是可迭代集合的对象做成可迭代集合。static void Main(string[] args){ foreach (var item in getNums()) { Console.WriteLine(item); }} static IEnumerable getNums(){ yield re
阅读全文
摘要:扩展方法使您能够向现有类型“添加”方法,而无需创建新的派生类型、重新编译或以其他方式修改原始类型。我们来为String类型定义一个简单的扩展方法:public static class Extensions{ public static void SayHello(this String name) { Console.WriteLine("Hello {0}",name); }}之后,我们可以在main函数中这样使用扩展方法:static void Main(string[] args){ String s = "Wade"; s.SayHello()
阅读全文
摘要:匿名类型关键字varvar关键字,可以把它理解为类型占位符,它并不是C#中的一种基本类型。它能在你编写程序的时候,自动计算出等式右边的类型,而且支持智能感知。//可以是整型var vInt = 123; //可以是字符串var vString = "Hello Var!"; //可以是日期类型var vDateTime = new DateTime(); //甚至可以是一个数组var vIntArray = new int[] { 1, 2, 3, 4, 5, 6 };但需要注意的是,一旦指明类型之后,不能再更改它的类型了,否则将报错。//将它指定为整型var vInt =
阅读全文
浙公网安备 33010602011771号