LINQ查詢(xún)句法基礎(chǔ)分析
在向大家詳細(xì)介紹LINQ查詢(xún)句法之前,首先讓大家了解下集合初始化器,然后全面介紹LINQ查詢(xún)句法。
集合初始化器
- 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());
編譯器會(huì)自動(dòng)為你做集合插入操作。如果你為Hashtable初始化的話(huà)就相當(dāng)于使用了兩個(gè)對(duì)象初始化器。
LINQ查詢(xún)句法
- 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查詢(xún)句法是使用標(biāo)準(zhǔn)的LINQ查詢(xún)運(yùn)算符來(lái)表達(dá)查詢(xún)時(shí)一個(gè)方便的聲明式簡(jiǎn)化寫(xiě)法。該句法能在代碼里表達(dá)查詢(xún)時(shí)增進(jìn)可讀性和簡(jiǎn)潔性,讀起來(lái)容易,也容易讓人寫(xiě)對(duì)。Visual Studio 對(duì)查詢(xún)句法提供了完整的智能感應(yīng)和編譯時(shí)檢查支持。編譯器在底層把查詢(xún)句法的表達(dá)式翻譯成明確的方法調(diào)用代碼,代碼通過(guò)新的擴(kuò)展方法和Lambda表達(dá)式語(yǔ)言特性來(lái)實(shí)現(xiàn)。上面的查詢(xún)句法等價(jià)于下面的代碼:
- var selectperson = persons.Where(p=>p.age>=20).Select(p=>p.username.ToUpper());
LINQ查詢(xún)句法可以實(shí)現(xiàn)90%以上T-SQL的功能(由于T-SQL是基于二維表的,所以L(fǎng)INQ的查詢(xún)語(yǔ)法會(huì)比T-SQL更簡(jiǎn)單和靈活),但是由于智能感應(yīng)的原因,select不能放在一開(kāi)始就輸入。
【編輯推薦】