国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

(十一)CSharp-LINQ-標(biāo)準(zhǔn)查詢(xún)運(yùn)算符(3)

這篇具有很好參考價(jià)值的文章主要介紹了(十一)CSharp-LINQ-標(biāo)準(zhǔn)查詢(xún)運(yùn)算符(3)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

一、標(biāo)準(zhǔn)查詢(xún)運(yùn)算符

1、概念

標(biāo)準(zhǔn)查詢(xún)運(yùn)算符由一系列 API 方法組成,API 能讓我們查詢(xún)?nèi)魏?.NET 數(shù)組或集合。

標(biāo)準(zhǔn)運(yùn)算符的要點(diǎn):

  • 標(biāo)準(zhǔn)查詢(xún)運(yùn)算符使用方法語(yǔ)法。

  • 一些運(yùn)算符返回 Ienumerable 對(duì)象(或其他序列),而其他運(yùn)算符返回標(biāo)量。返回標(biāo)量的運(yùn)算符立即執(zhí)行查詢(xún),并返回一個(gè)值,而不是一個(gè)可枚舉類(lèi)型對(duì)象。ToArray()、ToList() 等 ToCollection 運(yùn)算符也會(huì)立即執(zhí)行。

  • 很多操作都以一個(gè)謂詞作為參數(shù)。謂詞是一個(gè)方法,它以對(duì)象為參數(shù),根據(jù)對(duì)象是否滿足某個(gè)條件而返回 true 或 false.

  • 被查詢(xún)的集合對(duì)象叫作序列,它必須實(shí)現(xiàn) IEnumerable<T>接口,其中 T 是類(lèi)型。

  • 用作方法的運(yùn)算符直接作用于序列對(duì)象,在這里就是 numbers 數(shù)組。

  • 返回類(lèi)型不是 Ienumerable 對(duì)象,而是 int。

   class Program
    {
        static int[] numbers = new int[] { 2, 4, 6 };
        static void Main(string[] args)
        {
            int total = numbers.Sum();
            int howMany = numbers.Count();

            Console.WriteLine($"Total:{ total },Count:{ howMany }");
            Console.ReadKey();
        }
    }

//標(biāo)量對(duì)象:int
//序列:numbers
//運(yùn)算符:Count()

表-20-1標(biāo)準(zhǔn)查詢(xún)運(yùn)算符

運(yùn)算符名 描述
Where 根據(jù)給定的謂詞對(duì)序列進(jìn)行過(guò)濾
Select 指定要包含一個(gè)對(duì)象或?qū)ο蟮囊徊糠?/td>
SelectMany 一種查詢(xún)類(lèi)型,返回集合的集合。該方法將這些結(jié)果合并為一個(gè)單獨(dú)的集合
Take 接受一個(gè)輸入?yún)?shù) count,返回序列中的前 count 個(gè)對(duì)象
Skip 接受一個(gè)輸入?yún)?shù) count,跳過(guò)序列中的前 count 個(gè)對(duì)象,返回剩余對(duì)象
TakeWhile 接受一個(gè)謂詞,開(kāi)始迭代序列,只要謂詞對(duì)當(dāng)前項(xiàng)的計(jì)算結(jié)果為 true,就選擇該項(xiàng)。在謂詞返回第一個(gè) false 的時(shí)候,該項(xiàng)和其余項(xiàng)都被丟棄
SkipWhile 接受一個(gè)謂詞,開(kāi)始迭代序列,只要謂詞對(duì)當(dāng)前項(xiàng)的計(jì)算結(jié)果為 true,就跳過(guò)該項(xiàng)。在謂詞返回第一個(gè) false 的時(shí)候,該項(xiàng)和其余項(xiàng)都會(huì)被選擇
Join 對(duì)兩個(gè)序列執(zhí)行內(nèi)聯(lián)結(jié)。
GroupJoin 可以產(chǎn)生層次結(jié)果的聯(lián)結(jié),第一個(gè)序列中的各個(gè)元素都與第二個(gè)序列中的元素集合相關(guān)聯(lián)
Concat 連接兩個(gè)序列
OrderBy/ThenBy 根據(jù)一個(gè)或多個(gè)鍵對(duì)序列中的元素按升序排序
Reverse 反轉(zhuǎn)序列中的元素
GroupBy 分組序列中的元素
Distinct 去除序列中的重復(fù)項(xiàng)
Union 返回兩個(gè)序列的并集
Intersect 返回兩個(gè)序列的交集
Except 操作兩個(gè)序列。返回的是第一個(gè)序列中不重復(fù)的元素減去同樣位于第二個(gè)序列中的元素
AsEnumerable 將序列作為 IEumerable <TSource> 返回
ToArray 將序列作為數(shù)組返回
ToList 將序列作為L(zhǎng)ist <T> 返回
ToDictionary 將序列作為 Dictionary<TKey,TElement>返回
ToLookup 將序列作為 LookUp<TKey,TElement>返回
OfType 所返回的序列中的元素是指定的類(lèi)型
Cast 將序列中所有的元素強(qiáng)制轉(zhuǎn)換為給定的類(lèi)型
SequenceEqual 返回一個(gè)布爾值,指定兩個(gè)序列是否相等
First 返回序列中第一個(gè)與謂詞匹配的元素。如果沒(méi)有元素與謂詞匹配,就拋出 InvalidOperation-Exception
FirstOrDefault 返回序列中第一個(gè)與謂詞匹配的元素。如果沒(méi)有給出謂詞,方法返回序列的第一個(gè)元素。如果沒(méi)有元素與謂詞匹配,就使用該類(lèi)型的默認(rèn)值
Last 返回序列中最后一個(gè)與謂詞匹配的元素。如果沒(méi)有元素與謂詞匹配,就拋出 InvalidOperation-Exception
LastOrDefault 返回序列中最后一個(gè)與謂詞匹配的元素。如果沒(méi)有元素與謂詞匹配,就返回默認(rèn)值
Single 返回序列中與謂詞匹配的單個(gè)元素。如果沒(méi)有元素匹配,或多于一個(gè)元素匹配,就拋出異常
SingleOrDefault 返回序列中與謂詞匹配的單個(gè)元素。如果沒(méi)有元素匹配,或多于一個(gè)元素匹配,就返回默認(rèn)值
ElementAt 給定一個(gè)參數(shù) n,返回序列中第 n + 1 個(gè)元素
ElementAtOrDefault 給定一個(gè)參數(shù) n,返回序列中第 n + 1 個(gè)元素。如果索引超出范圍,就返回默認(rèn)值
DefaultIfEmpty 提供一個(gè)在序列為空(empty)時(shí)的默認(rèn)值
Range 給定一個(gè) start 整型和 count 整型,該方法返回的序列包含 count 個(gè)整型,其中第一個(gè)元素的值為 start,每個(gè)后續(xù)元素都比前一個(gè)大 1
Repeat 給定一個(gè) T 類(lèi)型的 element 和一個(gè) count 整數(shù),該方法返回的序列具有 count 個(gè) elemen 副本
Empty 返回給定類(lèi)型 T 的空序列
Any 返回一個(gè)布爾值,指明序列中是否存在滿足謂詞的元素
All 返回一個(gè)布爾值,指明序列中的全部元素是否都滿足謂詞
Contains 返回一個(gè)布爾值,指明序列中是否包含給定的元素
Count 返回序列中元素的個(gè)數(shù)(int)。它的重載可以接受一個(gè)謂詞,并返回序列中滿足謂詞的元素個(gè)數(shù)
Sum 返回序列中值的總和
Min 返回序列中最小的值
Max 返回序列中最大的值
Average 返回序列中值的平均值
Aggregate 連續(xù)對(duì)序列中的各個(gè)元素應(yīng)用給定的函數(shù)

2、標(biāo)準(zhǔn)查詢(xún)運(yùn)算符的簽名

System.Linq.Enumerable 類(lèi)聲明了標(biāo)準(zhǔn)查詢(xún)運(yùn)算符方法。它們是擴(kuò)展了 IEnumerable<T>泛型類(lèi)的擴(kuò)展方法。

如 3個(gè)標(biāo)準(zhǔn)查詢(xún)運(yùn)算符的簽名:Count、First 和 Where。

  • 1)由于運(yùn)算符是泛型方法,因此每個(gè)方法名都具有相關(guān)的泛型參數(shù)(T)。
  • 2)由于運(yùn)算符是擴(kuò)展 IEnumerable 類(lèi)的擴(kuò)展方法,它們必須滿足下面的語(yǔ)法條件。
    聲明為 public 和 static。
    在第一個(gè)參數(shù)前有 this 擴(kuò)展指示器。
    把 IEnumerable<T>作為第一個(gè)參數(shù)類(lèi)型。
public static int Count<T>(this IEnumerable<T> source);
public static T First<t>(THIS IEnumerable<T> source);
public static IEnumerable<T> where<T>(this IEnumerable<T> source, ...);

//this:擴(kuò)展治時(shí)期

示例:文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-504471.html

     static void Main(string[] args)
        {
            int[] intArray = new int[] { 3, 4, 5, 6, 7, 9 };
            var count1 = Enumerable.Count(intArray);//方法語(yǔ)法
            var firstNum1 = Enumerable.First(intArray);//方法語(yǔ)法

            var count2 = intArray.Count();//擴(kuò)展方法
            var firstNum2 = intArray.First();//擴(kuò)展方法

            Console.WriteLine($"Count:{ count1 }, FirstNumber:{ firstNum1 }");
            Console.WriteLine($"Count:{ count2 }, FirstNumber:{ firstNum2 }");

            Console.ReadKey();
        }

輸出結(jié)果:

Count:6, FirstNumber:3
Count:6, FirstNumber:3

3、查詢(xún)表達(dá)式和標(biāo)準(zhǔn)查詢(xún)運(yùn)算符

兩者可以組合使用,示例:

 static void Main(string[] args)
        {
            var numbers = new int[] { 2, 6, 4, 8, 10 };
            int howMany = (from n in numbers
                           where n < 7
                           select n).Count();

            Console.WriteLine($"Count:{ howMany }");

            Console.ReadKey();
        }

輸出結(jié)果:

Count:3

4、將委托作為參數(shù)

要點(diǎn):

  • 泛型委托用于給運(yùn)算符提供用戶(hù)自定義的代碼。

簽名:

//運(yùn)算符形式
public static int Count<T>(this IEnumerable<T> source);
//添加泛型委托參數(shù),接受單個(gè)T類(lèi)型的輸入?yún)?shù)并返回布爾值的委托對(duì)象
//委托代碼的返回值必須指定元素是否應(yīng)包含在總數(shù)中。
public static int Count<T>(this IEnumerable<T> source,
						   Func<T,bool> predicate);

//泛型委托: Func<T,bool> predicate

使用 Lambda 示例:

        static void Main(string[] args)
        {
            int[] intArray = new int[] { 3, 4, 5, 6, 7, 9 };
            var countOdd = intArray.Count(n => n % 2 == 1);

            Console.WriteLine($"Count of odd numbers:{ countOdd }");
            Console.ReadKey();
        }

輸出結(jié)果:

Count of odd numbers:4

.NET 框架定義了兩套泛型委托類(lèi)型來(lái)用于標(biāo)準(zhǔn)查詢(xún)運(yùn)算符,即 Func 委托和 Action 委托。

Func 委托:

public delegate TR Func<out TR>();
public delegate TR Func<in T1, out TR>(T1 a1);
public delegate TR Func<in T1, in T2, out TR>(T1 a1, T2 a2);
public delegate TR Func<in T1, in T2, in T3, out TR>(T1 a1, T2 a2, T3 a3);
  • 返回類(lèi)型參數(shù)中 out 關(guān)鍵字,使之協(xié)變。
  • 輸入?yún)?shù)有一個(gè) in 關(guān)進(jìn)啊,使之可以逆變。

Action 委托:

public delegate void Action ();
public delegate void Action<in T1> (T1 a1);
public delegate void Action<in T1, in T2> (T1 a1, T2 a2);
public delegate void Action<in T1, in T2, in T3> (T1 a1, T2 a2, T3 a3);

使用委托參數(shù)的示例

    class Program
    {
        static bool IsOdd(int x) //委托對(duì)象使用的方法
        {
            return x % 2 == 1;
        }

        static void Main(string[] args)
        {
            int[] intArray = new int[] { 3, 4, 5, 6, 7, 9 };

            Func<int, bool> myDel = new Func<int, bool>(IsOdd);//委托對(duì)象
            var countOdd = intArray.Count(myDel);//使用委托
           
            Console.WriteLine($"Count of odd numbers:{ countOdd }");
            Console.ReadKey();
        }
    }

輸出結(jié)果:

Count of odd numbers:4

5、使用 Lambda 表達(dá)式參數(shù)的示例

示例:

 static void Main(string[] args)
        {
            int[] intArray = new int[] { 3, 4, 5, 6, 7, 9 };

            var countOdd = intArray.Count( x => x % 2 == 1);
           
            Console.WriteLine($"Count of odd numbers:{ countOdd }");
            Console.ReadKey();
        }

//Lambda 表達(dá)式:x => x % 2 == 1

6、匿名方法替代 Lambda 表達(dá)式

 static void Main(string[] args)
        {
            int[] intArray = new int[] { 3, 4, 5, 6, 7, 9 };

            Func<int, bool> myDel = delegate (int x)
             {
                 return x % 2 == 1;
             };

            var countOdd = intArray.Count(myDel);

            Console.WriteLine($"Count of odd numbers:{ countOdd }");
            Console.ReadKey();
        }

到了這里,關(guān)于(十一)CSharp-LINQ-標(biāo)準(zhǔn)查詢(xún)運(yùn)算符(3)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶(hù)投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 1ll大學(xué)學(xué)生信息管理系統(tǒng)系統(tǒng)_學(xué)院管理_查詢(xún)新增或修改刪除標(biāo)準(zhǔn)接口_

    1ll大學(xué)學(xué)生信息管理系統(tǒng)系統(tǒng)_學(xué)院管理_查詢(xún)新增或修改刪除標(biāo)準(zhǔn)接口_

    目錄 修訂版本 1.?目的 2.?閱讀人員 3.?參考文檔 ll大學(xué)學(xué)生信息管理系統(tǒng)系統(tǒng)_學(xué)院管理_查詢(xún)新增或修改刪除標(biāo)準(zhǔn)接口 4.1 接口概述 4.2?接口名稱(chēng) 4.3查詢(xún)學(xué)院信息接口標(biāo)準(zhǔn) 4.4新增學(xué)院信息接口標(biāo)準(zhǔn) 4.5修改學(xué)院信息接口標(biāo)準(zhǔn) 學(xué)生信息管理系統(tǒng)系統(tǒng)_學(xué)院管理_查詢(xún)新增或修改刪

    2024年02月17日
    瀏覽(28)
  • 【.NET Core】Linq查詢(xún)運(yùn)算符(二)

    查詢(xún)運(yùn)算符是組成Linq模式的方法。這些方法中的大多數(shù)都作用于序列;其中序列指其類(lèi)型實(shí)現(xiàn) IEnumberableT 接口或 IQueryableT 接口的對(duì)象。標(biāo)準(zhǔn)查詢(xún)運(yùn)算符提供包括篩選、投影、集合、排序等查詢(xún)功能。 查詢(xún)運(yùn)算符包含兩組,一組作用于類(lèi)型 IEnumberableT 的對(duì)象,另一組作用于類(lèi)

    2024年02月05日
    瀏覽(18)
  • Csharp學(xué)習(xí)Linq

    Csharp學(xué)習(xí)Linq

    這里繼續(xù)使用之前文章創(chuàng)建的學(xué)生類(lèi),首先簡(jiǎn)單介紹一下linq的使用。 Student.cs 初始化學(xué)生數(shù)據(jù) 下面寫(xiě)幾個(gè)簡(jiǎn)單的linq的語(yǔ)句,大概知道一下它的使用. 下面嘗試探索一下這個(gè)linq的本質(zhì)是什么? 嘗試自己實(shí)現(xiàn)一下這3個(gè)需求代碼,如下 這上面的代碼有什么問(wèn)題? 大量的重復(fù)代碼

    2024年03月19日
    瀏覽(15)
  • C#使用Linq和Loop計(jì)算集合的平均值、方差【標(biāo)準(zhǔn)差】

    C#使用Linq和Loop計(jì)算集合的平均值、方差【標(biāo)準(zhǔn)差】

    標(biāo)準(zhǔn)差公式是一種數(shù)學(xué)公式。標(biāo)準(zhǔn)差也被稱(chēng)為標(biāo)準(zhǔn)偏差,或者實(shí)驗(yàn)標(biāo)準(zhǔn)差,公式如下所示: 樣本標(biāo)準(zhǔn)差=方差的算術(shù)平方根=s=sqrt(((x1-x)^2 +(x2-x)^2 +......(xn-x)^2)/n) 總體標(biāo)準(zhǔn)差=σ=sqrt(((x1-x)^2 +(x2-x)^2 +......(xn-x)^2)/n ) 注解:上述兩個(gè)標(biāo)準(zhǔn)差公式里的x為一組數(shù)(n個(gè)數(shù)據(jù))的算術(shù)平均值

    2024年02月16日
    瀏覽(28)
  • 【C# 基礎(chǔ)精講】LINQ to XML查詢(xún)

    【C# 基礎(chǔ)精講】LINQ to XML查詢(xún)

    LINQ to XML 是 C# 中用于查詢(xún)和操作 XML 數(shù)據(jù)的強(qiáng)大工具。它允許您使用 LINQ 查詢(xún)語(yǔ)法對(duì) XML 文檔進(jìn)行查詢(xún)、過(guò)濾、投影等操作,從而更加方便地處理 XML 數(shù)據(jù)。本文將詳細(xì)介紹 LINQ to XML 的基本概念、常見(jiàn)操作以及示例,幫助您了解如何在 C# 中使用 LINQ to XML 進(jìn)行 XML 數(shù)據(jù)的查詢(xún)和

    2024年02月12日
    瀏覽(50)
  • 【C# 基礎(chǔ)精講】LINQ to Objects查詢(xún)

    【C# 基礎(chǔ)精講】LINQ to Objects查詢(xún)

    LINQ to Objects是LINQ技術(shù)在C#中的一種應(yīng)用,它專(zhuān)門(mén)用于對(duì)內(nèi)存中的對(duì)象集合進(jìn)行查詢(xún)和操作。通過(guò)使用LINQ to Objects,您可以使用統(tǒng)一的語(yǔ)法來(lái)查詢(xún)、過(guò)濾、排序、分組等操作各種.NET對(duì)象。本文將詳細(xì)介紹LINQ to Objects的基本概念、常見(jiàn)的操作和示例,以幫助您更好地理解如何在

    2024年02月11日
    瀏覽(18)
  • EF.Core 使用Linq的Contact聯(lián)合查詢(xún)問(wèn)題

    在.net Core 5 WebAPI 項(xiàng)目中應(yīng)用 EF Core 5 實(shí)體框架,使用Linq的Contact聯(lián)合進(jìn)行多表查詢(xún)。 定義兩個(gè)子查詢(xún)語(yǔ)句,查詢(xún)結(jié)果 select 返回的對(duì)象結(jié)構(gòu)類(lèi)型都是一致的。 Linq查詢(xún)結(jié)果集封裝對(duì)象類(lèi): DatingComplaint 實(shí)體類(lèi)映射(Fluent API): 但在執(zhí)行到 ToListAsync() 代碼行查詢(xún)返回結(jié)果時(shí),拋

    2024年02月13日
    瀏覽(17)
  • C#:了解LINQ,簡(jiǎn)化數(shù)據(jù)查詢(xún)和操作的強(qiáng)大工具

    C#:了解LINQ,簡(jiǎn)化數(shù)據(jù)查詢(xún)和操作的強(qiáng)大工具

    以下是 LINQ(Language Integrated Query)中常見(jiàn)的及其作用,并給出一個(gè)示例以展示其執(zhí)行結(jié)果: from :用于指定數(shù)據(jù)源,可以是集合、數(shù)組、數(shù)據(jù)庫(kù)表等。 示例: where :用于篩選滿足指定條件的元素。 示例: select :用于選擇返回的結(jié)果集。 示例: orderby :用于對(duì)結(jié)果集

    2024年02月12日
    瀏覽(30)
  • C#中var關(guān)鍵字詳解:強(qiáng)類(lèi)型、匿名類(lèi)型和LINQ查詢(xún)的妙用!

    C#中var關(guān)鍵字詳解:強(qiáng)類(lèi)型、匿名類(lèi)型和LINQ查詢(xún)的妙用!

    ? 在C#中, var 是強(qiáng)類(lèi)型的,因?yàn)樗诰幾g時(shí)會(huì)根據(jù)變量的初始化表達(dá)式推斷出變量的實(shí)際類(lèi)型,并且一旦確定了類(lèi)型,就不能再更改。這種類(lèi)型推斷是在編譯時(shí)進(jìn)行的,因此代碼中的變量在運(yùn)行時(shí)是具有明確定義類(lèi)型的。 下面是一個(gè)簡(jiǎn)單的示例,說(shuō)明 var 的強(qiáng)類(lèi)型特性

    2024年02月01日
    瀏覽(18)
  • mysql單表查詢(xún),排序,分組查詢(xún),運(yùn)算符

    mysql單表查詢(xún),排序,分組查詢(xún),運(yùn)算符

    查詢(xún)插入的數(shù)據(jù)據(jù) – 1. 查詢(xún)出部門(mén)編號(hào)為30的所有員工 – 2. 所有銷(xiāo)售員的姓名、編號(hào)和部門(mén)編號(hào)。 – 3. 找出獎(jiǎng)金高于工資的員工。 – 4. 找出獎(jiǎng)金高于工資60%的員工。 – 5. 找出部門(mén)編號(hào)為10中所有經(jīng)理,和部門(mén)編號(hào)為20中所有銷(xiāo)售員的詳細(xì)資料。 – 6. 找出部門(mén)編號(hào)為10中

    2024年02月13日
    瀏覽(17)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包