您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關C#中LINQ的基本用法是什么的內容。小編覺得挺實用的,因此分享給大家做個參考。一起跟隨小編過來看看吧。
LINQ是什么?
LINQ是Language Integrated Query(語言集成查詢的縮寫), 微軟官方 對其的描述:
語言集成查詢 (LINQ) 是一系列直接將查詢功能集成到 C# 語言的技術統稱。
基本用法是什么?
(我目前也只會最基本的用法。。)
LINQ查詢操作由三個不同的操作組成:
下面我將用我學習時用的一個小例子來演示。
有兩個數據源:武林高手的集合和武林絕學的集合。
我用的是兩個集合,實際上不只是集合可以作為數據源
微軟官方文檔提到:
上例中,數據源是一個數組,因此它隱式支持泛型IEnumerable<T> 接口。 這一事實意味著該數據源可以用 LINQ 進行查詢。
說回我的例子,我實現了兩個類:
MatialArtsMaster 表示武林高手:
//武林高手 class MatialArtsMaster { public int ID { get; set; } public string Name { get; set; } public int Age { get; set; } public string Menpai { get; set; } public string Kongfu { get; set; } public int Level { get; set; } public override string ToString() { return string.Format("id:{0},name:{1},age:{2},menpai:{3},kongfu:{4},level:{5}", this.ID, this.Name, this.Age, this.Menpai, this.Kongfu, this.Level); } }
Kongfu 表示武林絕學:
//武學 class Kongfu { public int Id { get; set; } public string Name { get; set; } public int Power { get; set; } public Kongfu() { } public Kongfu(int id, string name, int power) { Id = id; Name = name; Power = power; } public override string ToString() { return string.Format("Id:{0},Name:{1},Power:{2}", this.Id, this.Name, this.Power); } }
然后填充兩個集合:
{ var MasterList = new List<MatialArtsMaster> { new MatialArtsMaster(){ID=001,Name="黃蓉",Age=18,Menpai="丐幫",Kongfu="打狗棒法",Level=9}, new MatialArtsMaster(){ID=002,Name="洪七公",Age=70,Menpai="丐幫",Kongfu="打狗棒法",Level=10}, new MatialArtsMaster(){ID=003,Name="郭靖",Age=22,Menpai="丐幫",Kongfu="降龍十八掌",Level=10}, new MatialArtsMaster(){ID=004,Name="任我行",Age=50,Menpai="明教",Kongfu="葵花寶典",Level=1}, new MatialArtsMaster(){ID=005,Name="東方不敗",Age=35,Menpai="明教",Kongfu="葵花寶典",Level=10}, new MatialArtsMaster(){ID=006,Name="林平之",Age=23,Menpai="華山",Kongfu="葵花寶典",Level=7}, new MatialArtsMaster(){ID=007,Name="岳不群",Age=50,Menpai="華山",Kongfu="岳不群",Level=8}, new MatialArtsMaster(){ID=008,Name="令狐沖",Age=23,Menpai="華山",Kongfu="獨孤九劍",Level=10}, new MatialArtsMaster(){ID=009,Name="梅超風",Age=23,Menpai="梅花島",Kongfu="九陰真經",Level=8}, }; var kungfuList = new List<Kongfu>() { new Kongfu(){Id=1,Name="打狗棒法",Power=90}, new Kongfu(){Id=2,Name="降龍十八掌",Power=95}, new Kongfu(){Id=3,Name="葵花寶典",Power=100}, new Kongfu(){Id=4,Name="獨孤九劍",Power=100}, new Kongfu(){Id=5,Name="九陰真經",Power=100}, };
接下來就是查詢了,基本的LINQ查詢操作主要通過 from , in , select , where 關鍵字實現。例如:
查詢修煉 葵花寶典 的武林高手:
var res = from master in MasterList where master.Kongfu == "葵花寶典" select master; foreach(var temp in res) { Console.WriteLine(temp.ToString()); } //id: 4,name: 任我行,age: 50,menpai: 明教,kongfu: 葵花寶典,level: 1 //id: 5,name: 東方不敗,age: 35,menpai: 明教,kongfu: 葵花寶典,level: 10 //id: 6,name: 林平之,age: 23,menpai: 華山,kongfu: 葵花寶典,level: 7
查詢所有武林高手的名字:
var res = from master in MasterList select master.Name; foreach(var temp in res) { Console.WriteLine(temp.ToString()); } //黃蓉 //洪七公 //郭靖 //任我行 //東方不敗 //林平之 //岳不群 //令狐沖 //梅超風
微軟官方將 from 關鍵字后的那個變量稱為 范圍變量 :
范圍變量就像 foreach 循環中的迭代變量,但查詢表達式中不會真正發生迭代。 當執行查詢時,范圍變量將充當對 customers 中每個連續的元素的引用。
這種寫法寫起來和SQL語句十分相似,邏輯功能也基本上一樣,所以如果已經會SQL的話會很容易理解。
擴展方法
除了這樣的標準寫法,還可以通過數據源的擴展方法來實現LINQ查詢。最簡單易懂的一個方法是 where() 方法。
如要查詢所有修煉等級大于8的武林高手:
var res = MasterList.Where(master => master.Level > 8); foreach(var temp in res) { Console.WriteLine(temp.ToString()); } //id: 1,name: 黃蓉,age: 18,menpai: 丐幫,kongfu: 打狗棒法,level: 9 //id: 2,name: 洪七公,age: 70,menpai: 丐幫,kongfu: 打狗棒法,level: 10 //id: 3,name: 郭靖,age: 22,menpai: 丐幫,kongfu: 降龍十八掌,level: 10 //id: 5,name: 東方不敗,age: 35,menpai: 明教,kongfu: 葵花寶典,level: 10 //id: 8,name: 令狐沖,age: 23,menpai: 華山,kongfu: 獨孤九劍,level: 10
擴展方法還有很多,如 Select 、 SelectMany 、 Join 和 Orderby 。他們的具體用法可參閱微軟官方文檔-擴展方法
)。
最后
LINQ是一項強大的技術,我才了解了一點點LINQ的知識(甚至可能還有錯誤,如果有請一定指正!),保持學習才是長久之道。
感謝各位的閱讀!關于C#中LINQ的基本用法是什么就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。