日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Linq的简介和基础知识学习

發布時間:2024/6/21 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linq的简介和基础知识学习 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

學習LINQ之前,我們要知道LINQ是干什么,解決什么問題的,怎樣學習?

一、LINQ簡介

1、什么是LINQ?

  什么是LINQ?LINQ中文翻譯為語言集成查詢(Language Integrated Query),更通俗的講,它相當于一個通用的數據查詢接口。LINQ最初由Anders hejlsberg構思,20071119日,

LINQ作為.NET FrameWork3.5的一部分正式發布,同時微軟也將LINQ集成到了Visual Studio 2008中,這一巨大的創新,實現了面向對象和數據訪問的互通有無。

2、LINQ主要解決什么問題?

  我們知道在LINQ之前,面向對象和數據訪問這兩個領域是相互分裂的,編程語言中的數據類型,和數據庫中的數據類型也有一些出入,同時SQLXML都有自己的查詢語言

而對象卻沒有自己的查詢語言,這些在很大程度上限制開發的效率,而LINQ的設計理念就是在不同類型的數據之間(關系數據、層次模型數據等)之間實現數據訪問的互通有無,

為不同的數據類型提供統一的訪問接口。

3、學習LINQ需要做哪些基本準備

  在開始學習LINQ之前,我們需要先來了解下理解C# 3.0的一些新特性:隱含類型局部變量、自動屬性、對象初始化器、集合初始化器、匿名類型、Lambda表達式、

擴展方法、局部方法、yield和IEnumerable接口、查詢語法等

二、LINQ查詢分類

1、Linq to Objects

  主要負責對象查詢

2、Linq to XML

  主要負責XML查詢

3、LInq to ADO.Net

  主要負責數據庫查詢,Linq to ado.Net 又分為Linq to Sql(語法查詢),Linq to DataSet(數據查詢),Linq to Entity(實體查詢)

三、基礎知識的學習

1、隱含類型局部變量

  隱含類型var, 我們都知道Javascript是一種弱類型的語言,所以在運行的時候才會更加的靈活。我們現在所接觸的語言大部分都是強類型的語言,

所謂強類型的語言,就是程序聲明的變量、實例化對象,必須有明確的類型規定,這樣在編譯的時候就為其分配一定的內存空間,這樣的話代碼的

的安全性就比較高,為了提高程序的運行效率和靈活性,微軟也把var給引進了進來

static void Main(string[] args){#region 隱含類型變量var用法//定義 string var name = "張曉峰";//定義 intvar age = 26;//定義 string[]var peoples = new[] { "張三", "李四", "王五" };//輸出保存的值Console.WriteLine("名字:"+name);Console.WriteLine("年齡:" + age);foreach (var p in peoples) {Console.WriteLine("姓名:"+ p);}#endregion//保證控制臺不一閃而過 Console.ReadLine();}

輸出結果:

編譯器可以自動識別隱含類型的局部變量,但是前提是變量必須有值,但是在使用null之前,必須要確定類型,例如:var test=(string)null;

這樣編譯器可以自動的推斷值類型,如果單純的為test=null,則編譯器無法識別其類型。

2、自動屬性

以前定義一個類中屬性和方法需這樣寫

public class People{private string name;private string sex;private int age;public string Name {get { return name; }set { name = value; }}public string Sex {get { return sex; }set { sex = value; }}public int Age {get { return age; }set { age = value; }}}

使用自動屬性后,可以這樣寫,效果是同樣的

public class People{public string Name { get; set; }public string Sex { get; set; }public int Age { get; set; }}

3、對象初始化器

對象初始化器C#3.0之前和之后語法對比

static void Main(string[] args){#region 對象初始化器的使用//C#3.0之前的用法People p1 = new People();p1.Name = "張三";p1.Sex = "";p1.Age = 27;//C#3.0之后用法People p2 = new People() { Name = "李四", Sex = "", Age = 18 };//輸出信息Console.WriteLine("人員信息:");Console.WriteLine("姓名:"+p1.Name+",性別:"+p1.Sex+",年齡:"+p1.Age);Console.WriteLine("姓名:" + p2.Name + ",性別:" + p2.Sex + ",年齡:" + p2.Age);#endregion//保證控制臺不一閃而過 Console.ReadLine();}

輸出結果:

4、集合初始化器

集合初始化器C#3.0之前和之后寫法比較

static void Main(string[] args){#region 集合對象初始化器的使用//C#3.0之前的用法List<People> peoples = new List<People>();People p1 = new People();p1.Name = "張三";p1.Sex = "";p1.Age = 27;People p2 = new People();p2.Name = "李四";p2.Sex = "";p2.Age = 18;peoples.Add(p1);peoples.Add(p2);//輸出人員信息Console.WriteLine("人員信息如下:");foreach (People p in peoples){Console.WriteLine("姓名:" + p.Name + ",性別:" + p.Sex + ",年齡:" + p.Age);}//C#3.0之后用法 List<People> people1s = new List<People>() {new People() { Name="王五",Sex="",Age=27},new People() { Name="趙六",Sex="",Age=18}};//輸出人員信息Console.WriteLine("\n人員信息如下:");foreach (People p in people1s){Console.WriteLine("姓名:" + p.Name + ",性別:" + p.Sex + ",年齡:" + p.Age);}#endregion//保證控制臺不一閃而過 Console.ReadLine();}

輸出結果:

5、匿名類型

和隱含類型的局部變量一樣,匿名類型就是開發者自定義類型,無須顯示定義。在LINQ中匿名類會常常用到。

使用方法如下:

?

static void Main(string[] args){#region 匿名類型使用var name = "瑪麗";var sex = "";var age = 21;//匿名類型(實體類)var people = new{ Name = name, Sex = sex, Age = age};//輸出信息Console.WriteLine("姓名:" + people.Name + ",性別:" + people.Sex + ",年齡:" + people.Age);#endregion//保證控制臺不一閃而過 Console.ReadLine();}

輸出結果:

6、Lambea表達式

  Lambda表達式是由委托-->匿名函數-->Lambda表達式一步步過度而來的

 

7、擴展方法

  擴展方法多用于對CLR類型一些操作的擴展,在3.0之前如果要實現這些操作,一般都是建

一下輔助類,擴展方法能方便的實現這些公共。

7.1、定義擴展方法需要注意的地方:

1)擴展方法只能只在靜態類中定義并且是靜態方法,

2)擴展方法不能與原有方法名沖突,否則將無效

3)擴展方法的參數必須為(this擴展類的類實例,Parameter p)7.2、例子實例

class Program{static void Main(string[] args){Console.WriteLine("LiSha".ShowLove());Console.ReadLine();}}#region string的擴展類public static class ExensionString {public static string ShowLove(this string s) {return "I Love," + s;}}#endregion

結果如下:

?

8、局部方法

  談到局部方法,首先要說一下局部類,局部類是用partial修飾的類,可以由多個partial修飾的同名類組合成一個類,局部方法是3.0以后加入的特性,局部方法必須定義在局部類中,但是局部方法的定義和實現可以分開。在這里同時要注意,局部方法的返回值必須是靜態的,返回值必須是void,可以有參也可以無參,有無方法實現均可。

9、yieId

10、IEnumerable接口

?

Ps:

學習網址:http://blog.csdn.net/xuemoyao/article/details/8047513

  ?

轉載于:https://www.cnblogs.com/xielong/p/6814396.html

總結

以上是生活随笔為你收集整理的Linq的简介和基础知识学习的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。