最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C# LINQ的基本使用方法示例

 更新時間:2020年08月16日 10:54:04   作者:秦國慶  
這篇文章主要給大家介紹了關(guān)于C# LINQ的基本使用教程,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用C# LINQ具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧

LINQ是什么?

LINQ是Language Integrated Query(語言集成查詢的縮寫), 微軟官方 對其的描述:

語言集成查詢 (LINQ) 是一系列直接將查詢功能集成到 C# 語言的技術(shù)統(tǒng)稱。

基本用法是什么?

(我目前也只會最基本的用法。。)

LINQ查詢操作由三個不同的操作組成:

  1. 獲取數(shù)據(jù)源
  2. 創(chuàng)建查詢
  3. 執(zhí)行查詢

下面我將用我學(xué)習(xí)時用的一個小例子來演示。

有兩個數(shù)據(jù)源:武林高手的集合和武林絕學(xué)的集合。

我用的是兩個集合,實際上不只是集合可以作為數(shù)據(jù)源

微軟官方文檔提到:

上例中,數(shù)據(jù)源是一個數(shù)組,因此它隱式支持泛型IEnumerable<T> 接口。 這一事實意味著該數(shù)據(jù)源可以用 LINQ 進(jìn)行查詢。

說回我的例子,我實現(xiàn)了兩個類:

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 表示武林絕學(xué):

//武學(xué)
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="梅超風(fēng)",Age=23,Menpai="梅花島",Kongfu="九陰真經(jīng)",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="九陰真經(jīng)",Power=100},
   };

接下來就是查詢了,基本的LINQ查詢操作主要通過 from , in , select , where 關(guān)鍵字實現(xiàn)。例如:

查詢修煉 葵花寶典 的武林高手:

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());
  }
  //黃蓉
  //洪七公
  //郭靖
  //任我行
  //東方不敗
  //林平之
  //岳不群
  //令狐沖
  //梅超風(fēng)

微軟官方將 from 關(guān)鍵字后的那個變量稱為 范圍變量 :

范圍變量就像 foreach 循環(huán)中的迭代變量,但查詢表達(dá)式中不會真正發(fā)生迭代。 當(dāng)執(zhí)行查詢時,范圍變量將充當(dāng)對 customers 中每個連續(xù)的元素的引用。

這種寫法寫起來和SQL語句十分相似,邏輯功能也基本上一樣,所以如果已經(jīng)會SQL的話會很容易理解。

擴(kuò)展方法

除了這樣的標(biāo)準(zhǔn)寫法,還可以通過數(shù)據(jù)源的擴(kuò)展方法來實現(xiàn)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

擴(kuò)展方法還有很多,如 Select 、 SelectMany 、 Join 和 Orderby 。他們的具體用法可參閱微軟官方文檔-擴(kuò)展方法

)。

最后

LINQ是一項強(qiáng)大的技術(shù),我才了解了一點點LINQ的知識(甚至可能還有錯誤,如果有請一定指正!),保持學(xué)習(xí)才是長久之道。

總結(jié)

到此這篇關(guān)于C# LINQ的基本使用方法的文章就介紹到這了,更多相關(guān)C# LINQ基本用法內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 對C# 多態(tài)的理解

    對C# 多態(tài)的理解

    這篇文章主要介紹了對C# 多態(tài)的理解,幫助大家更好的理解和學(xué)習(xí)c#,感興趣的朋友可以了解下
    2020-08-08
  • WCF的異常處理

    WCF的異常處理

    這篇文章介紹了WCF處理異常的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-05-05
  • c#調(diào)整圖片分辨率的實現(xiàn)示例

    c#調(diào)整圖片分辨率的實現(xiàn)示例

    本文主要介紹了c#調(diào)整圖片分辨率的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-10-10
  • 簡單C#代碼實現(xiàn)modbus-rtu通訊發(fā)送數(shù)據(jù)方式

    簡單C#代碼實現(xiàn)modbus-rtu通訊發(fā)送數(shù)據(jù)方式

    這篇文章主要介紹了簡單C#代碼實現(xiàn)modbus-rtu通訊發(fā)送數(shù)據(jù)方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • C#復(fù)雜XML反序列化為實體對象兩種方式小結(jié)

    C#復(fù)雜XML反序列化為實體對象兩種方式小結(jié)

    本文主要介紹了C#復(fù)雜XML反序列化為實體對象兩種方式,主要介紹如何把通過接口獲取到的Xml數(shù)據(jù)轉(zhuǎn)換成(反序列化)我們想要的實體對象,感興趣的可以一起來了解一下
    2022-04-04
  • 基于C#實現(xiàn)電腦系統(tǒng)掛機(jī)鎖

    基于C#實現(xiàn)電腦系統(tǒng)掛機(jī)鎖

    這篇文章主要為大家詳細(xì)介紹了如何利用C#實現(xiàn)電腦系統(tǒng)掛機(jī)鎖,文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)C#有一定的幫助,感興趣的小伙伴可以跟隨小編一起了解一下
    2022-12-12
  • unity實現(xiàn)鼠標(biāo)經(jīng)過時ui及物體的變色操作

    unity實現(xiàn)鼠標(biāo)經(jīng)過時ui及物體的變色操作

    這篇文章主要介紹了unity實現(xiàn)鼠標(biāo)經(jīng)過時ui及物體的變色操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04
  • C#(4.0)不常見的語法

    C#(4.0)不常見的語法

    今天工作遇到4.0新增語法 不解 請教 遂知,簡單的整理下,需要的朋友可以參考下
    2012-02-02
  • C#?計算DataTime的4種時間差的方法(相差天數(shù)、相差小時、相差分鐘、相差秒)

    C#?計算DataTime的4種時間差的方法(相差天數(shù)、相差小時、相差分鐘、相差秒)

    這篇文章主要介紹了C#?計算DataTime的4種時間差(相差天數(shù)、相差小時、相差分鐘、相差秒),本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-05-05
  • C#設(shè)計模式之裝飾器模式實例詳解

    C#設(shè)計模式之裝飾器模式實例詳解

    本文詳細(xì)講解了C#設(shè)計模式之裝飾器模式,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-10-10

最新評論

普陀区| 沂源县| 衡南县| 鸡东县| 康定县| 桃江县| 行唐县| 乌鲁木齐市| 汝城县| 桐梓县| 井研县| 江门市| 上栗县| 清水河县| 东乌珠穆沁旗| 嘉义县| 紫云| 太白县| 浪卡子县| 兴安县| 广德县| 天津市| 隆子县| 云阳县| 霞浦县| 临夏市| 章丘市| 寻甸| 兴文县| 邹城市| 固原市| 翁源县| 白山市| 屯昌县| 平泉县| 平原县| 瓮安县| 怀柔区| 哈尔滨市| 邛崃市| 岐山县|