C# LINQ

来源:https://www.cnblogs.com/coderJiebao/archive/2018/04/02/CSharp02.html
-Advertisement-
Play Games

1. 自定義 Master,Kongfu 類 2. 測試代碼 ...


1. 自定義 Master,Kongfu 類

 1 class Master
 2 {
 3 
 4     public int Id { get; set; }
 5     public string Name { get; set; }
 6     public int Age { get; set; }
 7     public string MenPai { get; set; }
 8     public string Kongfu { get; set; }
 9     public int Level { get; set; }
10 
11     public override string ToString()
12     {
13         return string.Format("Id:{0},Name:{1},Age:{2},MenPai:{3},Kongfu:{4},Level:{5}", Id, Name, Age,MenPai,Kongfu,Level);
14     }
15 }

 

 1 class Kongfu
 2 {
 3     public int Id { get; set; }
 4     public string Name { get; set; }
 5     public int Power { get; set; }
 6 
 7     public override string ToString()
 8     {
 9         return string.Format("Id:{0},Name:{1},Power:{2}", Id, Name, Power);
10     }
11 }

 

 

2. 測試代碼

  1 class Program
  2 {
  3     static void Main(string[] args)
  4     {
  5         var master = new List<Master>()
  6         {
  7             new Master() { Id = 100, Age = 100, Kongfu = "九陽神功",Level=10,MenPai="華山",Name="李二狗" },
  8             new Master() { Id = 50, Age = 10, Kongfu = "九陽神功1" ,Level=5,MenPai="華山",Name="李大狗"},
  9             new Master() { Id = 200, Age = 60, Kongfu = "九陽神功2",Level=6,MenPai="華山",Name="李狗蛋" },
 10         };
 11 
 12         var kongfu = new List<Kongfu>()
 13         {
 14             new Kongfu(){Id=1,Name="打狗棒法",Power=90},
 15             new Kongfu(){Id=2,Name="打狗棒法1",Power=30},
 16             new Kongfu(){Id=3,Name="打狗棒法2",Power=20},
 17         };
 18           
 19         //使用LINQ做查詢(表達式寫法)
 20         var res1 = from m in master   //from後面設置查詢的集合
 21                     where m.Level > 8     //where跟上條件
 22 
 23                     select m;//表示m的結果
 24         //select m.Name;  //只輸出名字
 25 
 26       
 27         //多個條件
 28         var res3 = from m in master
 29 
 30                     where m.Level > 8 && m.MenPai == "丐幫"
 31 
 32                     select m;
 33 
 34         var res4 = master.Where(m => m.Level > 8 && m.MenPai == "丐幫");
 35 
 36         //LINQ聯合查詢
 37         var res5 = from m in master
 38                     from k in kongfu
 39                     where m.Kongfu==k.Name
 40                     select new { master = m, kongfu = k };
 41                     //select m;
 42         foreach (var temp in res)
 43         {
 44             Console.WriteLine(temp);
 45         }
 46 
 47         //join on 聯合查詢
 48         var res12 = from m in master
 49                     join k in kongfu on m.Kongfu equals k.Name
 50                     where k.Power>90
 51                     select new { master = m, kongfu = k };
 52 
 53 
 54         //對查詢結果升序排序
 55         var res7 = from m in master
 56 
 57                     where m.Level > 8 && m.MenPai == "丐幫"
 58                     orderby m.Age
 59 
 60                     select m;
 61 
 62         //對查詢結果倒序排序
 63         var res8 = from m in master
 64 
 65                     where m.Level > 8 && m.MenPai == "丐幫"
 66                     orderby m.Age descending
 67 
 68                     select m;
 69 
 70         //對查詢結果升序排序
 71         var res9 = from m in master
 72 
 73                     where m.Level > 8 && m.MenPai == "丐幫"
 74                     orderby m.Age,m.Level //按照多個欄位進行排序,如果欄位的屬性相同,就按照第二個屬性排序
 75 
 76                     select m;
 77 
 78         var res10 = master.Where(m => m.Level > 8 && m.MenPai == "丐幫").OrderBy(m => m.Age);
 79         var res11 = master.Where(m => m.Level > 8 && m.MenPai == "丐幫").OrderBy(m => m.Age).ThenBy(m=>m.Level);
 80 
 81 
 82 
 83         //把人物按照所學功夫進行分類,看下哪個功夫修煉人數最多(分組查詢)
 84         var res13 = from k in kongfu
 85                     join m in master on k.Name equals m.Kongfu
 86                     into groups
 87                     orderby groups.Count()
 88                     select new { kongfu = k,count=groups.Count()};
 89 
 90         //按照欄位分組
 91         var res14 = from m in master
 92                     group m by m.MenPai
 93                     into g
 94                     select new { count=g.Count(),key=g.Key}; //g.Key按照哪個屬性分組
 95 
 96         //量詞操作符any all判斷集合中是否滿足某個條件
 97         bool res15=master.Any(m => m.MenPai == "丐幫");
 98         Console.WriteLine(res15);//只要有一個滿足返回true
 99 
100         bool res16=master.All(m => m.MenPai == "丐幫");//所有都滿足才返回true
101 
102 
103 
104         Console.ReadKey();
105     }
106 
107     //過濾方法
108     static bool Test1(Master m)
109     {
110         if (m.Level > 8) return true;
111         return false;
112     }
113 }

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 由於開發環境要求,或者實際需要。經常會出現python2.7和python3.x共存下的開發環境問題。虛擬環境的搭建可以很好的隔離Projects的開發環境。 1.首先解決python2.7和python3.x的pip問題 由於py2和py3版本都是使用的pip,然而我們在安裝Python3(>=3 ...
  • 你是產品經理,目前正在領導一個團隊開發一個新產品。不幸的是,您的產品的最新版本沒有通過質量檢查。由於每個版本都是基於之前的版本開發的,所以錯誤版本之後的所有版本都是不好的。 假設你有 n 個版本 [1, 2, ..., n],你想找出第一個錯誤的版本,導致下麵所有的錯誤。 你可以通過 bool is ...
  • 概述 前面 New UWP Community Toolkit 文章中,我們對 V2.2.0 版本的重要更新做了簡單回顧,其中簡單介紹了 RangeSelector,本篇我們結合代碼詳細講解一下 RangeSelector 相關功能。 RangeSelector 是一種範圍選擇控制項,有兩個滑塊控制項, ...
  • 職責描述:使用C#或其他跨平臺技術,開發Windows、Mac和Android、iOS程式。使用雲端API,開發高度集成雲端服務的應用。使用藍牙或其他無線技術,與硬體設備通訊,配置和管理設備。參與或負責軟體開發、測試、發佈、維護全生命周期管理。與國內外其他團結溝通,理解設計需求。任職要求: 基本技能 ...
  • 這是一篇很基礎的,大佬就不要看了,也不要噴,謝謝🌺🐔😂😂😂。 在看實例之前,我們先看一下頁面導航Navigate的定義 有三種方法,其中兩種是可以傳遞參數的 傳遞分兩種,一種帶參數的,一種利用全局變數。 1.帶parameter類型的傳遞 看一個小李子: xaml代碼定義很簡單, 主要看一 ...
  • 本文將用簡單的示例讓你瞭解如何通過ILAsm與ILDasm修改你的exe、dll文件 ...
  • 1. 伺服器端代碼 2. 客戶端代碼 3. 運行截圖 ...
  • 我想這個問題,是大家關註的問題,這個問題,我非常關註。 背景:在公司開發項目,我們一般都要把項目推送到公司領導創建的一個遠程倉庫裡邊去,但是我們同時也有自己的小倉庫,這樣的話,如何方便的將我們的代碼,給公司倉庫推送一次,然後給自己的倉庫推送一份呢? 1.在我們項目根目錄打開git 終端 現在這個項目 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...