国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

LINQ to Objects系列(1)相關技術準備

2019-11-17 03:09:47
字體:
來源:轉載
供稿:網友

LINQ to Objects系列(1)相關技術準備

  LINQ to Objects是LINQ的一部分,是查詢對象集合的一種語法。首先看一下LINQ的體系結構,這樣對LINQ有一個大致的了解。如圖。image

第一篇文章主要是回顧一下學習LINQ to Objects相關的基礎知識,主要分為以下幾個方面。

1,隱式類型局部變量

2,匿名類型

3,擴展方法

4,對象初始化器

5,集合初始化器

6,Lambda表達式

隱式類型局部變量

隱式類型局部變量,從名字中可以得出兩層含義,一是隱式類型,即相對于顯式類型(或稱為強類型)而言的,指不需要指定具體類型,而是由右邊表達式推斷出的類型。第二層含義是局部變量,指的是只能用于方法內部的局部變量,不能用在字段或方法參數上。隱式類型局部變量通常是用var關鍵字表示的。演示代碼如下。

//原來寫法string userName = "James";int age = 29;string[] userList = new string[] { "a","b","c"};foreach (string user in userList){        Console.WriteLine(user);}//現在寫法var userName = "mcgrady";var age = 29;var userList = new[] { "a", "b", "c" };foreach (var user in userList){       Console.WriteLine(user);}

匿名類型

匿名類型是C#的一種新特性,通常我們創建類型對象都是通過new關鍵字再跟上類名來創建的,但是匿名類型卻不需要指定類型名稱,而是由編譯器為我們自動創建一個類型名稱,而且不會告訴我們這個類型名稱是什么。匿名類型又稱為行內類型,通常與var關鍵字配合使用。演示代碼如下。

var data = new { UserName = "mcgrady", Age = "29" };Console.WriteLine("UserName:{0},Age:{1}", data.UserName, data.Age);

擴展方法

擴展方法使我們當我們沒有源代碼的情形下,仍可以對CLR類型或自定義類型進行一些擴展操作。同時它也是學習LINQ to Objects的基礎。另外,擴展方法只能定義在靜態類的靜態方法中,并且如果擴展方法名不能同原方法名同名,否則擴展方法將會失效。演示代碼如下。

public static class StringExtension    {        /// <summary>        /// 將當前字符串轉換為int        /// </summary>        /// <param name="str"></param>        /// <param name="result"></param>        /// <returns>如果成功則返回字符串的int形式,如果失敗則返回默認值</returns>        public static int ToInt(this string str, int result = -110)        {            int value;            if (int.TryParse(str, out value))            {                return value;            }            else            {                return result;            }        }    }//擴展方法調用string str = "111";int result = str.ToInt();

對象初始化器

在沒有對象初始化器之前,我們創建一個對象大概需要經過這么兩個步驟,首先new一個對象,然后給每個字段賦值。而有了對象初始化器之后,原本需要幾行代碼才能完成的任務變成一行代碼就可以完成,簡化了代碼,也使代碼更優雅。演示代碼如下。

//原來寫法Person person = new Person();person.UserName = "James";person.Age = 28;//現在寫法Person person = new Person { UserName = "James", Age = 28 };Console.WriteLine("UserName:{0},Age:{1}", person.UserName, person.Age);

集合初始化器

使用集合初始化器,編譯器會自動幫我們生成Add插入操作,前提是集合實現了IEnumerable接口。同對象初始化器一樣,使用集合初始化器增強代碼可讀性的同時使我們寫的代碼量更少了。演示代碼如下。

//原來寫法List<Person> personList = new List<Person>();personList.Add(new Person { UserName = "Wade", Age = 28 });personList.Add(new Person{ UserName="Bosh", Age=25});personList.Add(new Person { UserName = "James", Age = 29 });//現在寫法(使用集合初始化器)List<Person> newPersonList = new List<Person> {    new Person{ UserName="Wade", Age=28},    new Person{ UserName="Bosh", Age=25},    new Person{ UserName="James", Age=29}};

Lambda表達式

lambda表達式可以簡單地理解為:它是在匿名方法的基礎上,再進一步地簡化了創建委托實例所需要的代碼。后面會有一篇文章專門總結lambda表達式,它的語法格式為:(參數列表) => 表達式或者語句塊,下面是一個簡單的示例。

//lambda表達式var selectionPerson = newPersonList.Where(p => p.Age > 25).Select(p => p.UserName.ToUpper());foreach (var item in selectionPerson){    Console.WriteLine(item);}


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 博野县| 遂溪县| 泗阳县| 新干县| 新乡市| 兴化市| 杭州市| 兴化市| 香格里拉县| 宽甸| 三门县| 志丹县| 永新县| 庆阳市| 多伦县| 霍邱县| 渭南市| 衢州市| 上饶市| 丰城市| 固安县| 宽城| 保靖县| 新蔡县| 康马县| 南宫市| 左贡县| 永福县| 安义县| 紫云| 高密市| 东莞市| 突泉县| 中方县| 深水埗区| 青阳县| 无为县| 彭泽县| 多伦县| 儋州市| 翼城县|