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

linq中的分區(qū)操作符

 更新時(shí)間:2022年03月10日 15:18:15   作者:.NET開發(fā)菜鳥  
這篇文章介紹了linq中的分區(qū)操作符,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

Linq中的分區(qū)指的是在不重新排列元素的情況下,將輸入序列劃分為兩部分,然后返回其中一個(gè)部分的操作。

一、Take操作符

Take(int n)表示將從序列的開頭返回?cái)?shù)量為n的連續(xù)元素,常用于分頁。其定義如下:

public static IEnumerable<TSource> Take<TSource>(this IEnumerable<TSource> source, int count);

該方法只接受一個(gè)整數(shù),表示要返回的結(jié)果的數(shù)量。

看下面的例子:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace PartitionOperation
{
    class Program
    {
        static void Main(string[] args)
        {
            int[] source = new int[] { 86, 2, 77, 94, 100, 65, 5, 22, 70, 55, 81, 66, 45 };
            // 返回6個(gè)連續(xù)的數(shù)據(jù)
            var q = source.Take(6);

            foreach (var item in q)
            {
                Console.WriteLine(item);
            }

            Console.ReadKey();
        }
    }
}

結(jié)果:

二、TakeWhile操作符

TakeWhile操作符用于從輸入序列中返回指定數(shù)量且滿足一定條件的元素。TakeWhile方法執(zhí)行時(shí)將逐個(gè)比較序列中的每個(gè)元素是否滿足指定條件,直到碰到不符合指定條件的元素時(shí),返回前面所有的元素組成的序列。看方法的定義;

public static IEnumerable<TSource> TakeWhile<TSource>(this IEnumerable<TSource> source, Func<TSource, bool> predicate);
public static IEnumerable<TSource> TakeWhile<TSource>(this IEnumerable<TSource> source, Func<TSource, int, bool> predicate);

當(dāng)TakeWhile操作符被調(diào)用時(shí),會將source序列中的每一個(gè)元素順序傳遞給委托predicate,只有那些使得predicate返回值為true的元素才會被添加到結(jié)果序列中。要特別注意的是,當(dāng)TakeWhile操作符在查找過程中,遇到第一個(gè)返回false的元素就會立即停止執(zhí)行,跳出,不管后面還有沒有符合條件的元素,即使后面有符合條件的元素也不會要了。對于第二個(gè)擴(kuò)展方法,委托里面含有一個(gè)int類型的參數(shù),該參數(shù)代表集合的下標(biāo),可以依據(jù)此進(jìn)行一些據(jù)下標(biāo)操作的邏輯。

看下面的例子:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace PartitionOperation
{
    class Program
    {
        static void Main(string[] args)
        {
            int[] source = new int[] { 86, 2, 77, 94, 99, 100, 5, 22, 70, 55, 100, 66, 45 };
            // 返回集合中元素值小于100的序列
            var q = source.TakeWhile(i => i < 100);

            foreach (var item in q)
            {
                Console.WriteLine(item);
            }

            Console.ReadKey();
        }
    }
}

結(jié)果:

三、Skip操作符

Skip操作符用于從輸入序列中跳過指定數(shù)量的元素,返回由序列中剩余的元素所組成的新序列。來看下Skip的方法定義:

public static IEnumerable<TSource> Skip<TSource>(this IEnumerable<TSource> source, int count);

可以看到,該擴(kuò)展方法只接受一個(gè)整形的參數(shù),表示跳過的元素?cái)?shù)量。

看下面的例子:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace PartitionOperation
{
    class Program
    {
        static void Main(string[] args)
        {
            int[] source = new int[] { 86, 2, 77, 94, 100, 65, 5, 22, 70, 55, 81, 66, 45 };
            // 跳過5個(gè)元素
            var q = source.Skip(5);

            foreach (var item in q)
            {
                Console.WriteLine(item);
            }

            Console.ReadKey();
        }
    }
}

結(jié)果:

四、SkipWhile操作符

SkipWhile操作符用于從輸入序列中跳過滿足一定條件指定數(shù)量的元素,與TakeWhile操作符類似。來看下SkipWhile操作符的方法定義:

public static IEnumerable<TSource> SkipWhile<TSource>(this IEnumerable<TSource> source, Func<TSource, bool> predicate);
public static IEnumerable<TSource> SkipWhile<TSource>(this IEnumerable<TSource> source, Func<TSource, int, bool> predicate);

當(dāng)SkipWhile操作符被調(diào)用時(shí),會將輸入序列中的元素走位參數(shù)傳遞給委托predicate,只要predicate的返回值為true,該元素就會被跳過,繼續(xù)下一個(gè)元素,直到遇到一個(gè)使predicate返回值為false的元素,此元素以及輸入序列中剩余的元素將組合一個(gè)新的序列返回。注意后面的不再判斷,直接添加到返回序列。

第二個(gè)擴(kuò)展方法的委托里的參數(shù)多了個(gè)int,還是代表下標(biāo),可以根據(jù)下標(biāo)做一些邏輯處理。

看下面的例子:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace PartitionOperation
{
    class Program
    {
        static void Main(string[] args)
        {
            int[] source = new int[] { 86, 2, 77, 94, 100, 65, 5, 22, 70, 55, 81, 66, 45 };
            // 跳過數(shù)組中元素值小于100的元素
            var q = source.SkipWhile(i => i < 100);
            foreach (var item in q)
            {
                Console.WriteLine(item);
            }

            Console.ReadKey();
        }
    }
}

結(jié)果:

五、使用Take和Skip實(shí)現(xiàn)分頁

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace PartitionOperation
{
    class Program
    {
        static void Main(string[] args)
        {
            // 每頁顯示的條數(shù)
            int PageSize = 3;
            // 頁數(shù)從0開始
            int PageNum = 0;
            int[] source = new int[] { 86, 2, 77, 94, 100, 65, 5, 22, 70, 55, 81, 66, 45 };
            while(PageNum*PageSize<source.Length)
            {
                // 分頁
                var query = source.Skip(PageNum * PageSize).Take(PageSize);
                Console.WriteLine($"輸出第{PageNum+1}頁記錄");
                foreach (var item in query)
                {
                    Console.WriteLine(item);
                }
                PageNum++;
            }


            Console.ReadKey();
        }
    }
}

結(jié)果:

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • .NET使用RSA加密解密的方法

    .NET使用RSA加密解密的方法

    這篇文章主要為大家詳細(xì)介紹了.NET使用RSA加密解密的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-03-03
  • .Net彈性和瞬態(tài)故障處理庫Polly介紹

    .Net彈性和瞬態(tài)故障處理庫Polly介紹

    這篇文章介紹了.Net彈性和瞬態(tài)故障處理庫Polly,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-06-06
  • 在RowCommand事件中獲取索引值示例代碼

    在RowCommand事件中獲取索引值示例代碼

    這篇文章主要介紹了如何在RowCommand事件中獲取索引值,需要的朋友可以參考下
    2014-06-06
  • Win7安裝Visual Studio 2015失敗的解決方法

    Win7安裝Visual Studio 2015失敗的解決方法

    這篇文章主要為大家詳細(xì)介紹了Win7安裝Visual Studio 2015失敗的解決方案,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • asp.net基于Web Service實(shí)現(xiàn)遠(yuǎn)程上傳圖片的方法

    asp.net基于Web Service實(shí)現(xiàn)遠(yuǎn)程上傳圖片的方法

    這篇文章主要介紹了asp.net基于Web Service實(shí)現(xiàn)遠(yuǎn)程上傳圖片的方法,涉及asp.net調(diào)用Web Service的文件流操作與文件傳輸實(shí)現(xiàn)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-12-12
  • DataTable數(shù)據(jù)導(dǎo)出成Excel文件的小例子

    DataTable數(shù)據(jù)導(dǎo)出成Excel文件的小例子

    DataTable數(shù)據(jù)導(dǎo)出成Excel文件的小例子,需要的朋友可以參考一下
    2013-04-04
  • asp.net CommunityServer中的wwwStatus

    asp.net CommunityServer中的wwwStatus

    最近不得不對這個(gè)論壇進(jìn)行研究,以適應(yīng)后面的發(fā)展,現(xiàn)在同事研究太吃力了,以后改些東西,估計(jì)又要...打開web項(xiàng)目中的communityserver.config發(fā)現(xiàn)一個(gè)有趣的地方。
    2009-03-03
  • ASP.NET靜態(tài)頁生成方法

    ASP.NET靜態(tài)頁生成方法

    這篇文章主要介紹了ASP.NET靜態(tài)頁生成方法,主要有讀取模板頁、匹配替換標(biāo)簽與生成新HTML頁等步驟,是asp.net項(xiàng)目開發(fā)中非常實(shí)用的技巧,需要的朋友可以參考下
    2014-11-11
  • 使用FreeHost SQL2000網(wǎng)頁管理器出錯(cuò)解決辦法

    使用FreeHost SQL2000網(wǎng)頁管理器出錯(cuò)解決辦法

    在您登陸FreeHost SQL2000網(wǎng)頁管理器時(shí),如果提示以下信息: 發(fā)生類型為 System.Web.HttpUnhandledException 的異常
    2012-01-01
  • .net core部署到windows服務(wù)上的完整步驟

    .net core部署到windows服務(wù)上的完整步驟

    這篇文章主要給大家介紹了關(guān)于.net core部署到windows服務(wù)上的完整步驟,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用.net core具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09

最新評論

阿拉善左旗| 蒙自县| 海南省| 阜康市| 星座| 高要市| 麦盖提县| 南充市| 临安市| 云林县| 灵璧县| 沂水县| 都安| 广饶县| 南丹县| 蒙自县| 新丰县| 吉林市| 黄龙县| 荃湾区| 沙田区| 宣威市| 英山县| 广宗县| 宁南县| 林芝县| 淄博市| 焦作市| 鹿邑县| 六安市| 商南县| 怀柔区| 汨罗市| 克什克腾旗| 汤阴县| 昌宁县| 体育| 柏乡县| 成武县| 报价| 利川市|