LINQ查詢句法基礎分析
在向大家詳細介紹LINQ查詢句法之前,首先讓大家了解下集合初始化器,然后全面介紹LINQ查詢句法。
集合初始化器
- public class Person
- {
- public string username { get; set; }
- public int age { get; set; }
- public override stringToString()
- {
- return string.Format("username:{0} age:{1}", this.username, this.age);
- }
- }
- var persons = new List<Person> {
- new Person {username = "a", age=1},
- new Person {username = "b", age=2}};
- foreach(var p in persons)
- Console.WriteLine(p.ToString());
編譯器會自動為你做集合插入操作。如果你為Hashtable初始化的話就相當于使用了兩個對象初始化器。
LINQ查詢句法
- var persons = new List<Person> {
- new Person {username = "a", age=19},
- new Person {username = "b", age=20},
- new Person {username = "a", age=21},
- };
- var selectperson = from p in persons where p.age >= 20 select p.username.ToUpper();
- foreach(var p in selectperson)
- Console.WriteLine(p);
LINQ查詢句法是使用標準的LINQ查詢運算符來表達查詢時一個方便的聲明式簡化寫法。該句法能在代碼里表達查詢時增進可讀性和簡潔性,讀起來容易,也容易讓人寫對。Visual Studio 對查詢句法提供了完整的智能感應和編譯時檢查支持。編譯器在底層把查詢句法的表達式翻譯成明確的方法調用代碼,代碼通過新的擴展方法和Lambda表達式語言特性來實現。上面的查詢句法等價于下面的代碼:
- var selectperson = persons.Where(p=>p.age>=20).Select(p=>p.username.ToUpper());
LINQ查詢句法可以實現90%以上T-SQL的功能(由于T-SQL是基于二維表的,所以LINQ的查詢語法會比T-SQL更簡單和靈活),但是由于智能感應的原因,select不能放在一開始就輸入。
【編輯推薦】