1. 程式人生 > >LINQ自帶的擴充套件方法

LINQ自帶的擴充套件方法

閱讀目錄

  • GroupBy分組查詢
  • Where條件篩選。
  • Select()查詢
  • join( ) 連表查詢
  • OrderBy排序
  • Skip,Take分頁(LINQ:使用Take和Skip實現分頁)’
  • Distinct去重複

GroupBy分組查詢

//學生表
                List<UserInfo> Info = new List<UserInfo>(){
                    new UserInfo(){UserName="史兄弟",UserPwd="123",TypeId=1},
                    new UserInfo(){UserName="海兄弟",UserPwd="4567",TypeId=2},
                    new UserInfo(){UserName="海森",UserPwd="79884",TypeId=3}
                };

                //根據m => m.UserName.Substring(0, 1)這個條件來分組
                var item = Info.GroupBy(m => m.UserName.Substring(0, 1));
                //就是第一個字來分組 姓海的有幾位

                //輸出 第一個foreach就是輸出 姓
                foreach (var ite in item)
                {
                    Console.WriteLine("-------------------");
                    Console.WriteLine("姓:" + ite.Key + " 有" + ite.Count() + "個人");
                    //這個foreach就是輸出 全稱
                    foreach (var Val in ite)
                    {
                        Console.WriteLine(Val.UserName);
                    }
                }

Where條件篩選

//資料來源
                string[] Content = { "海森", "吃屎", "二狗", "三炮" };
                //使用Where() 條件的方法 
                var tent = Content.Where(m => m.Substring(0, 1) == "吃");
                //m => m.Substring(0, 1) == "吃" : 查詢數組裡面的元素的第一個字等於 “吃” 就查詢出來

                //輸出
                foreach (var item in tent)
                {
                    Console.WriteLine(item);
                }

Select()查詢

               int[] inms = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
                //Lambda 表示式 m => m * m 代表inms裡面的每個元素
                var listNum = inms.Select(m => m * m);

                //把Select() 方法查詢出的內容 給 輸出
                foreach (var item in listNum)
                {
                    Console.WriteLine(item);
                }

連表查詢 join( ) 方法

               //模仿兩張資料表
                //學生表
                List<UserInfo> Info = new List<UserInfo>(){
                    new UserInfo(){UserName="史兄弟",UserPwd="123",TypeId=1},
                    new UserInfo(){UserName="海兄弟",UserPwd="4567",TypeId=2},
                    new UserInfo(){UserName="海森",UserPwd="79884",TypeId=3}
                };
                //科目表
                List<UserType> Type = new List<UserType>(){
                    new UserType(){TypeName="Java高階",TypeId=1},
                    new UserType(){TypeName="Server資料庫",TypeId=2},
                    new UserType(){TypeName="Asp.Net-MVC",TypeId=3}
                };

                var list = Info.Join( //join() 連表查詢
                       Type, //你要連的另一個表
                       item => item.TypeId, //你這個表和另一個表關連的欄位
                       User => User.TypeId,

                       (item, User) => new
                       { // 要顯示的欄位
                           item.UserName,
                           item.UserPwd,
                           User.TypeName
                       }
                    );

                //輸出
                foreach (var item in list)
                {
                    Console.WriteLine(item);
                }

OrderBy排序

                //模仿表
                List<UserInfo> Info = new List<UserInfo>(){
                    new UserInfo(){UserName="史兄弟",UserPwd="123",TypeId=1},
                    new UserInfo(){UserName="海兄弟",UserPwd="4567",TypeId=2},
                    new UserInfo(){UserName="海森",UserPwd="79884",TypeId=3}
                };                //OrderBy() 升序排序 
                // 如果要設定多重排序條件,請使用OrderBy()加上ThenBy()的組合
                var Order = Info.OrderBy(m => m.UserName.Substring(0, 1)).ThenBy(m => m.TypeId);
                //m => m.UserName.Substring(0,1): 第一個條件是 根據第一個字的字母來排序                //輸出
                foreach (var item in Order)
                {
                    Console.WriteLine(item.UserName);
                }

Skip,Take分頁(LINQ:使用Take和Skip實現分頁)

//獲取資料列表,Model是類
IList<Model> list = dao.getmx(Model, pageInfo);
//DataTable資料
DataTable dt = ......;
//Skip是起始資料,表示從第n+1條資料開始.(此處pageNum應從0開始)
//pageNum:頁數、=0是第一頁,pageSize:一頁多少條
list = list.Skip(pageNum * pageSize).Take(pageSize).ToList();
//取前1-10條
list = list.Skip(0).Take(10).ToList();
//也可以這麼寫取前1-10條
list = list.Take(10).ToList();
//取第11-20條
list = list.Skip(10).Take(10).ToList();

Distinct去重複

//字串陣列
string[] idlist = new string[ ]{"aaa","bbb","aaa"};
//去除重複aaa
idlist = idlist.Distinct().ToArray();

相關推薦

LINQ擴充套件方法

閱讀目錄 GroupBy分組查詢 Where條件篩選。 Select()查詢 join( ) 連表查詢 OrderBy排序 Skip,Take分頁(LINQ:使用Take和Skip實現分頁)’ Distinct去重複 GroupBy分組查詢 //學生表

C# 不用系統方法將字符串類型123456轉換為值類型

pan array mstr [] ron string char highlight 方法 C# 不用系統自帶的方法將字符串類型123456轉換為值類型 static void Main(string[] args) {

JPAfindOne方法報錯原因

是由於jdk8的原因,有可能和spring boot的版本也關係, 兩種方式可選 註冊,返回類是Optional<Girl>, Optional是jdk8自帶的 @GetMapping(value = "/girls/{id}")public Optional<Gir

SpringMVCtoJson方法

公司同一型別的專案有兩個框架,老版本的要用到toJson,新版本的不需要,直接物件就好了。當時就有點奇怪,就看了下原來MVC利用@ResponseBody註解,在加上把fastjson包直接放到pom檔案裡引入就好了。 <mvc:annotation-dr

C#高階程式設計六十一天----LINQ中的擴充套件方法

LINQ中的擴充套件方法 LINQ中where擴充套件方法,要想使用,必須匯入using System.Linq;我們看一下這個方法的宣告: public static IEnumerable<TSource > Where<TSource>(thi

php7 contOS 編譯安裝全部擴充套件

1. 安裝依賴庫 yum install screen gcc git vim wget openssl curl yum install gmp-devel libc-client-devel bzip2-devel enchant-devel libwebp-deve

C# WebAPI中DateTime類型字段在使用微軟方法轉json格式後默認含T的解決辦法

ria 重載方法 靜態 http bapi nts href 方法 edi 原文:C# WebAPI中DateTime類型字段在使用微軟自帶的方法轉json格式後默認含T的解決辦法

N9(Meego系統)刪除軟體方法------筆者親測,可行,無副作用

將修改好了的status檔案複製到N9中,還是你正常連線電腦時所見的根目錄MyDocs/進入T端依次執行:devel-su回車換行rootme回車換行cp空格/home/user/MyDocs/status空格/var/lib/dpkg/status回車換行apt-get autoremove 回車換行以上

iOS重新定義系統方法,如 重定義 CGRectMake 和 CGPointMake 可以解決螢幕適配的問題

<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">在網上找了些螢幕適配的方法,因為之前的適配把螢幕劃分為不同比例的部分,還

Android 實現對圖片 Exif 的修改(Android 方法

很多時候我們都要對我們的圖片資訊進行一些處理,比如向圖片中寫入經緯度,拍攝時間,裝置資訊,作者等等。這個時候我們就要對我們的圖片Exif進行寫入資訊的操作,當然,我們想知道圖片的Exif資訊,也可以對E

Layui資料表格 加入 定義擴充套件方法(重新渲染Render當前頁資料)

具體開發中遇到的問題如下, 資料表格內的 內容 通過 table.cache["SampleList"] 修改後,重新渲染或重新載入會導致當前操作的分頁 和 配置被清空。我修改了第5頁第X行的X列值,重新渲染後就回到了最原始第1頁或重新呼叫了介面。 Layui 官方提供的文件 提供的重新整理表格方法有幾種

Linq 下的擴充套件方法太少了,您期待的 MoreLinq 來啦

## 一:背景 ### 1. 講故事 前幾天看同事在用 linq 給記憶體中的兩個 model 做左連線,用過的朋友都知道,你一定少不了一個叫做 `DefaultIfEmpty` 函式,這玩意吧,本來很流暢的 from...in...join, 突然搞進來這麼一個函式,真的是噁心他媽給噁心開門,噁心到

form表單的應用:form對象屬性和方法及提交時提交的數據.....

uil nsf fileread tex class dataurl asd who accept 1.html中含有form表單 (1)html <form id="picLoad" class="lt" style="width: 230px;" enctype=

關於ThinkCMF插件上傳不了圖片的解決方法

.cn 方法 插件 thinkcmf 解決方法 刪除 打開 blog 文件 原因:是因為刪除了存放圖片的文件夾,這是cmf在windows的一個BUG 解決方法: 再到php.ini裏把 這個打開就解決了關於ThinkCMF自帶插件上傳不了圖片的解決方法

Geant4采用make和cmake編譯運行geant4例子的方法

剛才 例子 1-1 build g++ 核數 emp cmake 編譯 該教程介紹如何將geant4中自帶的例子通過camke編譯成可執行文件,並運行程序。 1 在linux主目錄下創建一個geant4_workdir目錄,並將geant4自帶的例子B1復制到該目錄

SA:T1編寫主函數法和T2Matlab的SA工具箱GUI法,兩種方法實現對二元函數優化求解——Jason niu

lin plot itl 最優解 IT 主函數 alt 圖片 gui %SA:T1法利用Matlab編寫主函數實現對定義域[-5,5]上的二元函數求最優解—Jason niu [x,y] = meshgrid(-5:0.1:5,-5:0.1:5); z = x.^2 +

java基礎39 MyEclipse的常用快捷鍵和自己定義快捷鍵的方法步驟

inf www. shift -s htm html spa ctrl+左鍵 targe 1、MyEclipse自帶且常用的快捷鍵 內容提示(補全): Alt+/ 導包快捷鍵: Ctrl+Shift+o 格式化代碼: Ctrl+Shift+f 行代

卸載CentOS7-x64的OpenJDK並安裝Sun的JDK7的方法

too sun -i get 查看 .com 32位 pat false 第一步:查看並卸載CentOS自帶的OpenJDK 安裝好的CentOS會自帶OpenJdk,用命令 java -version ,會有下面的信息: java version "1.

ASPxComboBox 輸入法確定之後再搜索解決方法

name color value fixed bsp 顯示 val spa string <dx:ASPxComboBox ID="comChargeSubject_FixedFee" ClientInstanceName="comChargeSubject_Fix

centos安裝python3與的python2共存方法

目的:由於centos自帶的python是2,我們要安裝python3,並使2和3共存,通過python2來呼叫2,python3來呼叫3 自帶的python的軟連線的結構是,python指向python2,python2指向python2.6 且自帶的python沒有安裝pip即pip