Linq学习(一)

摘要:Linq的强大,相信学过的人都知道了。它是 VS 2008 和 .NET Framework 3.5 版中一项突破性的创新,它在对象领域和数据领域之间架起了一座桥梁。作用于所有基于IEnumerable<T>接口的源,可以大大简化之前查询、遍历数据源等。主要有LINQ to Objects、LINQ to DataSets、LINQ to SQL、LINQ to Entities、LINQ to XML。


(一).NET Framework 3.0新特性
学习Linq之前必须先懂的。相比于.NET Framework 2.0,.NET Framework 3.0还是新增了一些实用的功能。


(1)隐含类型局部变量
 var userlist = new[] { "aa", "bb", "ac" };
            foreach (var user in userlist)
            {
                Console.WriteLine(user);
            }
var 相当好用。编译器自动识别类型,声明是必须赋值。


(2)匿名类型
 var data = new { username = "wyf", age = "23" };
            Console.WriteLine("username={0},age={1}", data.username, data.age);


(3)扩展方法
    public static class Helper
    {
        public static bool In(this object o,IEnumerable b)
        {
            foreach (object obj in b)
            {
                if (obj == o)
                    return true;
            }
            return false;
        }
    }

调用时:Console.WriteLine("1".In(userlist))

 

1 类必须静态的

2 方法也必须静态的

3 方法的第一个参数必须是你要扩展的那个类型,比如你要给int扩展一个方法,那么第一个参数就必须是int。

4 在第一个参数前面还需要有一个this关键字。
注意的是扩展方法有“污染性”,所以我觉得在扩展的时候还是想想,是不是值得这样扩展。

 


(4)自动属性
 public string username { get; set; }
        public int age { get; set; }
只需get set即可,无需像.Net 2.0那样还需私有字段;

(5)对象自动初始化、集合自动初始化
 public class Person
    {
        public string username { get; set; }
        public int age { get; set; }

        public override string ToString()
        {
            return string.Format("username:{0} age:{1}",this.username,this.age);
        }
    }

var persons=new List<Person>
            {new Person{username="wyf",age=23},new Person{username="XHQ",age=22},new Person{username="HZm",age=25},};

 

posted @ 2009-12-02 20:07  wakerobin  阅读(298)  评论(0编辑  收藏  举报