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

C# Linq 詳解一

這篇具有很好參考價(jià)值的文章主要介紹了C# Linq 詳解一。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

目錄

一、概述

二、Where

三、Select

四、GroupBy

五、First / FirstOrDefault

六、Last / LastOrDefault


C# Linq 文檔(一)
1.Where,2.Select,3.GroupBy,4.First / FirstOrDefault,5.Last / LastOrDefault

C# Linq 文檔(二)
1.OrderBy,?2.OrderByDescending,3.Skip,4.Take,5.Any,6.All

C# Linq 文檔(三)
1.Sum / Min / Max / Average,2.Distinct,3.Concat,4.Join,5.ToList ,6.ToArray,7.ToDictionary

C# Linq 文檔(四)
1.SelectMany,2.Aggregate,3.DistinctBy,4.Reverse,5.SequenceEqual,6.Zip,7.SkipWhile ,8.TakeWhile


C# Linq 文檔(二)_熊思宇的博客-CSDN博客

C# Linq 文檔(三)_熊思宇的博客-CSDN博客

C# Linq 文檔(四)_熊思宇的博客-CSDN博客


一、概述

語言集成查詢 (LINQ) 是一系列直接將查詢功能集成到 C# 語言的技術(shù)統(tǒng)稱。 數(shù)據(jù)查詢歷來都表示為簡單的字符串,沒有編譯時(shí)類型檢查或 IntelliSense 支持。 此外,需要針對每種類型的數(shù)據(jù)源了解不同的查詢語言:SQL 數(shù)據(jù)庫、XML 文檔、各種 Web 服務(wù)等。 借助 LINQ,查詢成為了最高級的語言構(gòu)造,就像類、方法和事件一樣。

對于編寫查詢的開發(fā)者來說,LINQ 最明顯的“語言集成”部分就是查詢表達(dá)式。 查詢表達(dá)式采用聲明性查詢語法編寫而成。 使用查詢語法,可以用最少的代碼對數(shù)據(jù)源執(zhí)行篩選、排序和分組操作。 可使用相同的基本查詢表達(dá)式模式來查詢和轉(zhuǎn)換 SQL 數(shù)據(jù)庫、ADO .NET 數(shù)據(jù)集、XML 文檔和流以及 .NET 集合中的數(shù)據(jù)。

二、Where

Where 是 LINQ 的一個(gè)操作符,用于篩選滿足指定條件的元素。

說白了就是查找元素,這個(gè)在 C# 的開發(fā)中也是比較常用的,下面看一個(gè)例子

using System;
using System.Collections.Generic;
using System.Linq;

namespace LinqTest
{
    internal class Program
    {
        static void Main(string[] args)
        {
            List<int> numList = new List<int> { 1, 4, 5, 24, 43, 67, 12, 90, 15 };
            IEnumerable<int> collect = numList.Where(x => x > 20);
            foreach (int num in collect)
            {
                Console.WriteLine(num);
            }

            Console.ReadKey();
        }
    }
}

運(yùn)行:

C# Linq 詳解一,C#,c#

在 where 中,x 所代表的就是?numList 中的每一個(gè)元素,Where(x => x > 20) 所指的就是遍歷 numList 每一個(gè)元素,如果它大于20,那么就添加到?IEnumerable<int> 中,一般情況下,為了讓代碼更優(yōu)雅些,IEnumerable<int> 可以不寫,直接用 var 代替,當(dāng)然,你也可以寫的更清楚一些,這都是沒關(guān)系的。

using System;
using System.Collections.Generic;
using System.Linq;

namespace LinqTest
{
    internal class Program
    {
        static void Main(string[] args)
        {
            List<int> numList = new List<int> { 1, 4, 5, 24, 43, 67, 12, 90, 15 };
            var collect = numList.Where(x => x > 20);
            foreach (int num in collect)
            {
                Console.WriteLine(num);
            }

            Console.ReadKey();
        }
    }
}

另外,在 Where 后面可以繼續(xù)寫其他的條件也是沒問題的,因?yàn)楫?dāng)前的類型本來就是?IEnumerable 類型,它和 List 等數(shù)據(jù)結(jié)構(gòu)是一樣的,都可以使用 Linq 繼續(xù)操作,下面就是在? Where 后面又加了一個(gè) Where,這么寫也是不會(huì)報(bào)錯(cuò)的,但是不建議這么寫,最好是在后面加其他的查詢條件,比如?Select

using System;
using System.Collections.Generic;
using System.Linq;

namespace LinqTest
{
    internal class Program
    {
        static void Main(string[] args)
        {
            List<int> numList = new List<int> { 1, 4, 5, 24, 43, 67, 12, 90, 15 };
            var collect = numList.Where(x => x > 20).Where(x => x > 30);
            foreach (int num in collect)
            {
                Console.WriteLine(num);
            }

            Console.ReadKey();
        }
    }
}

運(yùn)行:

C# Linq 詳解一,C#,c#

在 Where 的判斷條件中,你就當(dāng)它和 if 中的判斷條件一樣寫,多寫幾個(gè)判斷條件也是可以的

using System;
using System.Collections.Generic;
using System.Linq;

namespace LinqTest
{
    internal class Program
    {
        static void Main(string[] args)
        {
            List<int> numList = new List<int> { 1, 4, 5, 24, 43, 67, 12, 90, 15 };
            var collect = numList.Where(x => x > 10 && x < 90);
            foreach (int num in collect)
            {
                Console.WriteLine(num);
            }

            Console.ReadKey();
        }
    }
}

運(yùn)行:

C# Linq 詳解一,C#,c#

有人可能會(huì)問:“不對啊,我在網(wǎng)上查資料中,和你寫的不一樣,他們寫的有?from, in?等關(guān)鍵字,你這為啥沒有啊,你這 Linq 是不是搞錯(cuò)了”?沒搞錯(cuò)哈,這都是正常的,比如下面的代碼,雖然寫法不一樣,但效果是一樣的,我更推薦使用上面的寫法,更容易理解,閱讀起來也更加方便。

using System;
using System.Collections.Generic;
using System.Linq;

namespace LinqTest
{
    internal class Program
    {
        static void Main(string[] args)
        {
            List<int> numList = new List<int> { 1, 4, 5, 24, 43, 67, 12, 90, 15 };

            //var collect = numList.Where(x => x > 10 && x < 90);

            var collect = from x in numList where x > 10 && x < 90 select x;
            foreach (int num in collect)
            {
                Console.WriteLine(num);
            }

            Console.ReadKey();
        }
    }
}

運(yùn)行:

C# Linq 詳解一,C#,c#

三、Select

Select 是 LINQ 的一個(gè)操作符,用于對序列中的每個(gè)元素進(jìn)行轉(zhuǎn)換或投影操作,并返回一個(gè)新的序列。

使用 Select 可以對數(shù)組中的每個(gè)元素進(jìn)行轉(zhuǎn)換,或者計(jì)算,下面用一個(gè)簡單的例子,將數(shù)組中每個(gè)元素 + 1

using System;
using System.Collections.Generic;
using System.Linq;

namespace LinqTest
{
    internal class Program
    {
        static void Main(string[] args)
        {
            List<int> numList = new List<int> { 1, 4, 5, 24, 43, 67, 12, 90, 15 };
            var collect = numList.Select(x => x + 1);
            foreach (var x in collect)
            {
                Console.WriteLine(x);
            }

            Console.ReadKey();
        }
    }
}

運(yùn)行:

C# Linq 詳解一,C#,c#

同樣的,在?Select 執(zhí)行結(jié)束后,依然可以添加其他的 Linq 操作,這個(gè)在 Linq 查詢中基本都是一樣的,后面就不再贅述了。

四、GroupBy

Linq GroupBy 方法用于按照指定的鍵對集合進(jìn)行分組,它返回一個(gè)根據(jù)指定鍵進(jìn)行分組的結(jié)果集。

先看一段代碼,演示?GroupBy 方法 是如何進(jìn)行分組的

using System;
using System.Collections.Generic;
using System.Linq;

namespace LinqTest
{
    internal class Program
    {
        static void Main(string[] args)
        {
            List<People> peopleList = new List<People>()
            {
                new People(){Name="張三", Age=12, Career="學(xué)生" },
                new People(){Name="柱子", Age=25, Career="農(nóng)民" },
                new People(){Name="鐵蛋", Age=23, Career="農(nóng)民" },
                new People(){Name="狗剩", Age=34, Career="職員" },
                new People(){Name="二狗", Age=28, Career="職員" },
            };

            var collect = peopleList.GroupBy(x=> x.Career == "職員");
            foreach (var group in collect)
            {
                Console.WriteLine("Grade {0}:", group.Key);
                foreach (var people in group)
                {
                    Console.WriteLine(people.Name);
                }
            }

            Console.ReadKey();
        }
    }

    class People
    {
        public string Name { get; set; }
        public int Age { get; set; }
        public string Career { get; set; }
    }
}

結(jié)果:?

C# Linq 詳解一,C#,c#

運(yùn)行后可以看到,返回的是兩組數(shù)據(jù),grade 等于 false 是不滿足條件的數(shù)據(jù),也一并返回了

C# Linq 詳解一,C#,c#

grade 等于 true 的正是我們想要的數(shù)據(jù)

C# Linq 詳解一,C#,c#

五、First / FirstOrDefault

First 方法用于返回集合中的第一個(gè)元素。如果集合為空,則會(huì)引發(fā)一個(gè)異常。如果你想要安全地獲取第一個(gè)元素,可以使用 FirstOrDefault 方法,它會(huì)返回默認(rèn)值(null或0,具體取決于元素類型)而不是引發(fā)異常。

using System;
using System.Collections.Generic;
using System.Linq;

namespace LinqTest
{
    internal class Program
    {
        static void Main(string[] args)
        {
            List<int> numList = new List<int> { 1, 4, 5, 24, 43, 67, 12, 90, 15 };
            int firstNumber = numList.First();
            Console.WriteLine("第一個(gè)元素:{0}", firstNumber);

            int defaultNumber = numList.FirstOrDefault();
            Console.WriteLine("第一個(gè)元素:{0}", defaultNumber);

            int[] emptyNumbers = { };
            int firstOrDefaultNumber = emptyNumbers.FirstOrDefault();
            Console.WriteLine("第一個(gè)元素:{0}", firstOrDefaultNumber);

            Console.ReadKey();
        }
    }
}

運(yùn)行:

C# Linq 詳解一,C#,c#

六、Last / LastOrDefault

Last 方法用于返回集合中的最后一個(gè)元素。如果集合為空,則會(huì)引發(fā)一個(gè)異常。如果你想要安全地獲取最后一個(gè)元素,可以使用 LastOrDefault 方法,它會(huì)返回默認(rèn)值(null或0,具體取決于元素類型)而不是引發(fā)異常。

using System;
using System.Collections.Generic;
using System.Linq;

namespace LinqTest
{
    internal class Program
    {
        static void Main(string[] args)
        {
            List<int> numList = new List<int> { 1, 4, 5, 24, 43, 67, 12, 90, 15 };
            int firstNumber = numList.Last();
            Console.WriteLine("最后一個(gè)元素:{0}", firstNumber);

            int defaultNumber = numList.LastOrDefault();
            Console.WriteLine("最后一個(gè)元素:{0}", defaultNumber);

            int[] emptyNumbers = { };
            int firstOrDefaultNumber = emptyNumbers.LastOrDefault();
            Console.WriteLine("最后一個(gè)元素:{0}", firstOrDefaultNumber);

            Console.ReadKey();
        }
    }
}

運(yùn)行:

C# Linq 詳解一,C#,c#

end文章來源地址http://www.zghlxwxcb.cn/news/detail-570677.html

到了這里,關(guān)于C# Linq 詳解一的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • C# Linq 學(xué)會(huì)使用,學(xué)會(huì)自己編寫Linq

    C# Linq 學(xué)會(huì)使用,學(xué)會(huì)自己編寫Linq

    Linq我暫時(shí)理解為,一種內(nèi)置的非常方便的數(shù)據(jù)查詢的工具 我們先學(xué)習(xí)它的使用 //數(shù)據(jù)類 //新建了一個(gè)List數(shù)據(jù),用來測試數(shù)據(jù)查詢? //現(xiàn)在定義一個(gè)需求,需要查出 id2 的數(shù)據(jù) 引用Linq的命名空間 ?引用命名空間之后,我們的list對象,擁有了一個(gè)擴(kuò)展方法,Where (擴(kuò)展方法,在之前的博客

    2024年02月06日
    瀏覽(29)
  • C#中的LINQ

    一:什么是LINQ LINQ代表語言集成查詢,是.net框架的擴(kuò)展,它允許我們用SQL查詢數(shù)據(jù)庫的方式來查詢數(shù)據(jù)的集合 二:LINQ延遲查詢的特性 延遲查詢是指查詢操作并不是在定義的時(shí)候執(zhí)行,而是在遍歷集合中的數(shù)據(jù)時(shí)才執(zhí)行 因?yàn)樽鳛閥ield迭代器的主體,只有使用foreach遍歷執(zhí)行到

    2023年04月09日
    瀏覽(21)
  • C# LINQ,SQL

    C#中的LINQ和SQL都是用于查詢數(shù)據(jù)的工具,但它們有以下異同點(diǎn): 異同點(diǎn): 1. LINQ和SQL都可以用于查詢數(shù)據(jù),但LINQ是在C#中使用的語言集成查詢,而SQL是一種獨(dú)立的查詢語言。 2. LINQ和SQL都支持基本的查詢操作,如選擇、過濾、排序和分組。 3. LINQ和SQL都支持連接多個(gè)表,但LI

    2024年02月10日
    瀏覽(18)
  • C# Lambda,LINQ

    Lambda表達(dá)式和LINQ語句都是C#中用于查詢和篩選數(shù)據(jù)的工具,但它們有一些異同點(diǎn)。 異同點(diǎn): 1. 語法不同: Lambda表達(dá)式是一種匿名函數(shù) ,它可以用于創(chuàng)建委托或表達(dá)式樹。而LINQ語句是一種查詢語句,它使用特定的和語法來查詢數(shù)據(jù)。 2. 功能不同: Lambda表達(dá)式可以用于

    2024年02月09日
    瀏覽(26)
  • C#高級編程 Linq介紹

    本文對C#高級編程部分的Linq查詢進(jìn)行介紹 目錄 一、Linq起源 二 LINQ 操作組成 2.1數(shù)據(jù)源 2.2查詢 3.3查詢執(zhí)行

    2024年02月11日
    瀏覽(28)
  • 【C# 基礎(chǔ)精講】LINQ 基礎(chǔ)

    【C# 基礎(chǔ)精講】LINQ 基礎(chǔ)

    LINQ(Language Integrated Query)是一項(xiàng)強(qiáng)大的C#語言特性,它使數(shù)據(jù)查詢和操作變得更加簡潔、靈活和可讀性強(qiáng)。通過使用LINQ,您可以使用類似SQL的語法來查詢各種數(shù)據(jù)源,如集合、數(shù)組、數(shù)據(jù)庫等。本文將介紹LINQ的基礎(chǔ)概念、常見的LINQ操作和示例,以及如何在C#中利用LINQ進(jìn)行數(shù)

    2024年02月12日
    瀏覽(22)
  • C#版本LINQ增強(qiáng)開源庫

    C#版本LINQ增強(qiáng)開源庫

    LINQ對應(yīng)的中文名稱是:語言集成查詢,是對一系列直接將查詢功能集成到C#語言技術(shù)的統(tǒng)稱,我們最常用的場景是,用于數(shù)據(jù)庫的查詢功能。 在.Net中,本身對Objects也支持LINQ的擴(kuò)展,但是對于一些特定的功能,就需要我們自己去擴(kuò)展。 所以,今天給大家推薦一個(gè)LINQ擴(kuò)展庫,

    2023年04月13日
    瀏覽(21)
  • C#基礎(chǔ)--Lambda和LINQ

    C#基礎(chǔ)--Lambda和LINQ

    在.NetFramewok的不同版本都有不同的樣子;在.NetCore下也都是支持的; 1.1 .Netframework1.0/1.1時(shí)代 1.2 .NetFramework2.0 匿名方法 增加了一個(gè)delegate, 可以訪問到除了參數(shù)以外的局部變量 1.3 .NetFramework3.0 前期 去掉了delegate,添加了一個(gè)= goes to 1.4 .NetFramework3.0 后期 去掉了匿名

    2024年02月17日
    瀏覽(20)
  • C#中LINQ的使用知多少?LINQ常功能整理,實(shí)例源代碼解析

    C#中LINQ的使用知多少?LINQ常功能整理,實(shí)例源代碼解析

    ? LINQ(Language-Integrated Query)是C#語言中的一個(gè)強(qiáng)大的查詢技術(shù),它提供了一種統(tǒng)一的查詢語法,可以用于查詢和操作各種數(shù)據(jù)源,包括集合、數(shù)據(jù)庫、XML等。下面詳細(xì)描述了LINQ的20個(gè)功能點(diǎn),并提供了相應(yīng)的源代碼。 查詢集合中的所有元素: 使用條件過濾集合中的元素:

    2024年02月05日
    瀏覽(24)
  • C#基礎(chǔ):利用LINQ進(jìn)行復(fù)雜排序

    請你寫出linq對表格排序, CODE=3排前面 ,其余按照 CODE降序 排序,CODE一樣再按照 字母升序 排序 ID CODE VALUE A0001 1 A A0002 1 B A0003 1 C A0004 2 D A0005 2 E A0006 2 F A0007 3 G A0008 3 H A0009 3 I A0010 4 J 若再加大難度,ID=A0005的排第一,然后CODE=3排前面,其余按照CODE降序排序,再按照字母升序排

    2024年01月18日
    瀏覽(18)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包