IEnumerable 與 IEnumerable


轉自:https://blog.csdn.net/qq_21419015/article/details/80495322   

IEnumerable 和IEnumerable<T> 接口在 .NET 中是非常重要的接口,它允許開發人員定義foreach語句功能的實現並支持非泛型方法的簡單的迭代,IEnumerable和IEnumerable<T>接口是 .NET Framework 中最基本的集合訪問器。它定義了一組擴展方法,用來對數據集合中的元素進行遍歷、過濾、排序、搜索等操作。

IEnumerable接口是非常的簡單,只包含一個抽象的方法Get IEnumerator(T),它返回一個可用於循環訪問集合的IEnumerator對象。

IEnumerable、IEnumerator、ICollection、IList、List
IEnumerator:提供在普通集合中遍歷的接口,有Current,MoveNext(),Reset(),其中Current返回的是object類型。
IEnumerable: 暴露一個IEnumerator,支持在普通集合中的遍歷。
IEnumerator<T>:繼承自IEnumerator,有Current屬性,返回的是T類型。

IEnumerable<T>:繼承自IEnumerable,暴露一個IEnumerator<T>,支持在泛型集合中遍歷。

擴展方法如下表所示:

 

名稱 說明
System_CAPS_pubmethod Aggregate

已重載。 對一個序列應用累加器函數。(由 Enumerable 定義。)

System_CAPS_pubmethod Aggregate

已重載。 對一個序列應用累加器函數。 將指定的種子值用作累加器初始值。(由 Enumerable 定義。)

System_CAPS_pubmethod Aggregate

已重載。 對一個序列應用累加器函數。 將指定的種子值用作累加器的初始值,並使用指定的函數選擇結果值。(由 Enumerable 定義。)

System_CAPS_pubmethod All

確定是否對序列中的所有元素都滿足條件。(由 Enumerable 定義。)

System_CAPS_pubmethod Ancestors

已重載。 返回包含與源集合中的每個節點的上級元素的集合。(由 Extensions 定義。)

System_CAPS_pubmethod Ancestors

已重載。 返回經過篩選的元素集合,其中包含對源集合中的每個節點的上級。 僅具有匹配的元素 XName 包括在集合中。(由 Extensions 定義。)

System_CAPS_pubmethod Any

已重載。 確定序列是否包含任何元素。(由 Enumerable 定義。)

System_CAPS_pubmethod Any

已重載。 確定是否序列中的任何元素都滿足條件。(由 Enumerable 定義。)

System_CAPS_pubmethod AsEnumerable

返回輸入類型化為 IEnumerable。(由 Enumerable 定義。)

System_CAPS_pubmethod AsParallel

已重載。 啟用查詢的並行化。(由 ParallelEnumerable 定義。)

System_CAPS_pubmethod AsQueryable

已重載。 將轉換泛型 IEnumerable 於泛型 IQueryable。(由 Queryable 定義。)

System_CAPS_pubmethod Average

已重載。 計算序列的平均值 Decimal 通過調用對輸入序列中的每個元素的轉換函數獲得的值。(由 Enumerable 定義。)

System_CAPS_pubmethod Average

已重載。 計算序列的平均值 Double 通過調用對輸入序列中的每個元素的轉換函數獲得的值。(由 Enumerable 定義。)

System_CAPS_pubmethod Average

已重載。 計算序列的平均值 Int32 通過調用對輸入序列中的每個元素的轉換函數獲得的值。(由 Enumerable 定義。)

System_CAPS_pubmethod Average

已重載。 計算序列的平均值 Int64 通過調用對輸入序列中的每個元素的轉換函數獲得的值。(由 Enumerable 定義。)

System_CAPS_pubmethod Average

已重載。 可以為 null 的序列的平均值,計算 Decimal 通過調用對輸入序列中的每個元素的轉換函數獲得的值。(由 Enumerable 定義。)

System_CAPS_pubmethod Average

已重載。 可以為 null 的序列的平均值,計算 Double 通過調用對輸入序列中的每個元素的轉換函數獲得的值。(由 Enumerable 定義。)

System_CAPS_pubmethod Average

已重載。 可以為 null 的序列的平均值,計算 Int32 通過調用對輸入序列中的每個元素的轉換函數獲得的值。(由 Enumerable 定義。)

System_CAPS_pubmethod Average

已重載。 可以為 null 的序列的平均值,計算 Int64 通過調用對輸入序列中的每個元素的轉換函數獲得的值。(由 Enumerable 定義。)

System_CAPS_pubmethod Average

已重載。 可以為 null 的序列的平均值,計算 Single 通過調用對輸入序列中的每個元素的轉換函數獲得的值。(由 Enumerable 定義。)

System_CAPS_pubmethod Average

已重載。 計算序列的平均值 Single 通過調用對輸入序列中的每個元素的轉換函數獲得的值。(由 Enumerable 定義。)

System_CAPS_pubmethod Cast

將強制轉換的元素 IEnumerable 為指定的類型。(由 Enumerable 定義。)

System_CAPS_pubmethod Concat

連接兩個序列。(由 Enumerable 定義。)

System_CAPS_pubmethod Contains

已重載。 確定序列是否包含指定的元素使用的默認相等比較器。(由 Enumerable 定義。)

System_CAPS_pubmethod Contains

已重載。 確定序列是否使用指定的包含指定的元素 IEqualityComparer。(由 Enumerable 定義。)

System_CAPS_pubmethod CopyToDataTable

已重載。 返回 DataTable ,其中包含的副本 DataRow 對象,給定輸入 IEnumerable 對象其中泛型參數 T 是 DataRow。(由 DataTableExtensions 定義。)

System_CAPS_pubmethod CopyToDataTable

已重載。 副本 DataRow 對象傳遞給指定 DataTable, ,給定輸入 IEnumerable 對象其中泛型參數 T 是 DataRow。(由 DataTableExtensions 定義。)

System_CAPS_pubmethod CopyToDataTable

已重載。 副本 DataRow 對象傳遞給指定 DataTable, ,給定輸入 IEnumerable 對象其中泛型參數 T 是 DataRow。(由 DataTableExtensions 定義。)

System_CAPS_pubmethod Count

已重載。 返回序列中的元素數。(由 Enumerable 定義。)

System_CAPS_pubmethod Count

已重載。 返回一個數字來表示多少個元素指定序列中的滿足條件。(由 Enumerable 定義。)

System_CAPS_pubmethod DefaultIfEmpty

已重載。 返回單一實例集合中指定的序列或類型參數的默認值的元素,如果序列為空。(由 Enumerable 定義。)

System_CAPS_pubmethod DefaultIfEmpty

已重載。 返回單一實例集合中指定的序列或指定的值的元素,如果序列為空。(由 Enumerable 定義。)

System_CAPS_pubmethod DescendantNodes

返回源集合中的每個文檔和元素的子代節點的集合。(由 Extensions 定義。)

System_CAPS_pubmethod Descendants

已重載。 返回元素的集合,其中包含每個元素和文檔與源集合中的子代元素。(由 Extensions 定義。)

System_CAPS_pubmethod Descendants

已重載。 返回經過篩選的元素集合,其中包含每個元素和文檔與源集合中的子代元素。 僅具有匹配的元素 XName 包括在集合中。(由 Extensions 定義。)

System_CAPS_pubmethod Distinct

已重載。 通過使用的默認相等比較器對值進行比較從序列返回非重復元素。(由 Enumerable 定義。)

System_CAPS_pubmethod Distinct

已重載。 返回序列中通過使用指定的非重復元素 IEqualityComparer 對值進行比較。(由 Enumerable 定義。)

System_CAPS_pubmethod ElementAt

返回序列中的指定索引處的元素。(由 Enumerable 定義。)

System_CAPS_pubmethod ElementAtOrDefault

返回序列中指定索引處的元素;如果索引超出范圍,則返回默認值。(由 Enumerable 定義。)

System_CAPS_pubmethod Elements

已重載。 返回源集合中的每個元素和文檔的元素的子集合。(由 Extensions 定義。)

System_CAPS_pubmethod Elements

已重載。 源集合中返回經過篩選的子集合元素的每個元素和文檔。 僅具有匹配的元素 XName 包括在集合中。(由 Extensions 定義。)

System_CAPS_pubmethod Except

已重載。 通過使用默認的相等比較器對值進行比較,生成兩個序列的差集。(由 Enumerable 定義。)

System_CAPS_pubmethod Except

已重載。 使用指定的生成兩個序列的差集 IEqualityComparer 對值進行比較。(由 Enumerable 定義。)

System_CAPS_pubmethod First

已重載。 返回一個序列的第一個元素。(由 Enumerable 定義。)

System_CAPS_pubmethod First

已重載。 返回序列中滿足指定條件的第一個元素。(由 Enumerable 定義。)

System_CAPS_pubmethod FirstOrDefault

已重載。 返回序列中的第一個元素;如果序列中不包含任何元素,則返回默認值。(由 Enumerable 定義。)

System_CAPS_pubmethod FirstOrDefault

已重載。 返回序列中滿足條件的第一個元素;如果未找到這樣的元素,則返回默認值。(由 Enumerable 定義。)

System_CAPS_pubmethod GroupBy

已重載。 根據指定的鍵選擇器函數對序列的元素進行分組。(由 Enumerable 定義。)

System_CAPS_pubmethod GroupBy

已重載。 根據指定的鍵選擇器函數並將進行比較的鍵使用指定的比較器對序列的元素進行分組。(由 Enumerable 定義。)

System_CAPS_pubmethod GroupBy

已重載。 根據指定的鍵選擇器函數和項目的元素的每個組通過使用指定的函數對序列的元素進行分組。(由 Enumerable 定義。)

System_CAPS_pubmethod GroupBy

已重載。 根據鍵選擇器函數對序列的元素進行分組。 通過使用比較器對鍵進行比較,並且通過使用指定的函數對每個組的元素進行投影。(由 Enumerable 定義。)

System_CAPS_pubmethod GroupBy

已重載。 根據指定的鍵選擇器函數對序列中的元素進行分組,並且從每個組及其鍵中創建結果值。(由 Enumerable定義。)

System_CAPS_pubmethod GroupBy

已重載。 根據指定的鍵選擇器函數對序列中的元素進行分組,並且從每個組及其鍵中創建結果值。 通過使用指定的比較器對鍵進行比較。(由 Enumerable 定義。)

System_CAPS_pubmethod GroupBy

已重載。 根據指定的鍵選擇器函數對序列中的元素進行分組,並且從每個組及其鍵中創建結果值。 通過使用指定的函數對每個組的元素進行投影。(由 Enumerable 定義。)

System_CAPS_pubmethod GroupBy

已重載。 根據指定的鍵選擇器函數對序列中的元素進行分組,並且從每個組及其鍵中創建結果值。 通過使用指定的比較器對鍵值進行比較,並且通過使用指定的函數對每個組的元素進行投影。(由 Enumerable 定義。)

System_CAPS_pubmethod GroupJoin

已重載。 基於鍵相等對兩個序列的元素進行關聯,並對結果進行分組。 使用默認的相等比較器對鍵進行比較。(由 Enumerable 定義。)

System_CAPS_pubmethod GroupJoin

已重載。 基於鍵相等對兩個序列的元素進行關聯,並對結果進行分組。 指定 IEqualityComparer 用來對鍵進行比較。(由 Enumerable 定義。)

System_CAPS_pubmethod InDocumentOrder

返回包含按文檔順序排序的源集合中的所有節點的節點集合。(由 Extensions 定義。)

System_CAPS_pubmethod Intersect

已重載。 通過使用的默認相等比較器對值進行比較,生成兩個序列的交集。(由 Enumerable 定義。)

System_CAPS_pubmethod Intersect

已重載。 使用指定的生成兩個序列的交集IEqualityComparer值進行比較。(由 Enumerable 定義。)

System_CAPS_pubmethod Join

已重載。 基於匹配鍵對兩個序列的元素關聯。 使用默認的相等比較器對鍵進行比較。(由 Enumerable 定義。)

System_CAPS_pubmethod Join

已重載。 基於匹配鍵對兩個序列的元素關聯。 指定 IEqualityComparer 用來對鍵進行比較。(由 Enumerable 定義。)

System_CAPS_pubmethod Last

已重載。 返回一個序列的最后一個元素。(由 Enumerable 定義。)

System_CAPS_pubmethod Last

已重載。 返回序列中滿足指定條件的最后一個元素。(由 Enumerable 定義。)

System_CAPS_pubmethod LastOrDefault

已重載。 返回序列中的最后一個元素;如果序列中不包含任何元素,則返回默認值。(由 Enumerable 定義。)

System_CAPS_pubmethod LastOrDefault

已重載。 返回序列中滿足條件的最后一個元素;如果未找到這樣的元素,則返回默認值。(由 Enumerable 定義。)

System_CAPS_pubmethod LongCount

已重載。 返回Int64表示序列中的元素總數。(由 Enumerable 定義。)

System_CAPS_pubmethod LongCount

已重載。 返回 Int64 表示序列中的多少個元素滿足條件。(由 Enumerable 定義。)

System_CAPS_pubmethod Max

已重載。 泛型序列中返回的最大值。(由 Enumerable 定義。)

System_CAPS_pubmethod Max

已重載。 調用轉換函數對序列的每個元素並返回最大 Decimal 值。(由 Enumerable 定義。)

System_CAPS_pubmethod Max

已重載。 調用轉換函數對序列的每個元素並返回最大 Double 值。(由 Enumerable 定義。)

System_CAPS_pubmethod Max

已重載。 調用轉換函數對序列的每個元素並返回最大 Int32 值。(由 Enumerable 定義。)

System_CAPS_pubmethod Max

已重載。 調用轉換函數對序列的每個元素並返回最大 Int64 值。(由 Enumerable 定義。)

System_CAPS_pubmethod Max

已重載。 調用轉換函數對序列的每個元素並返回最大可以為 null Decimal 值。(由 Enumerable 定義。)

System_CAPS_pubmethod Max

已重載。 調用轉換函數對序列的每個元素並返回最大可以為 null Double 值。(由 Enumerable 定義。)

System_CAPS_pubmethod Max

已重載。 調用轉換函數對序列的每個元素並返回最大可以為 null Int32 值。(由 Enumerable 定義。)

System_CAPS_pubmethod Max

已重載。 調用轉換函數對序列的每個元素並返回最大可以為 null Int64 值。(由 Enumerable 定義。)

System_CAPS_pubmethod Max

已重載。 調用轉換函數對序列的每個元素並返回最大可以為 null Single 值。(由 Enumerable 定義。)

System_CAPS_pubmethod Max

已重載。 調用轉換函數對序列的每個元素並返回最大 Single 值。(由 Enumerable 定義。)

System_CAPS_pubmethod Max

已重載。 調用泛型序列的每個元素的轉換函數並返回最大結果值。(由 Enumerable 定義。)

System_CAPS_pubmethod Min

已重載。 泛型序列中返回的最小值。(由 Enumerable 定義。)

System_CAPS_pubmethod Min

已重載。 調用轉換函數對序列的每個元素,並返回所需的最低 Decimal 值。(由 Enumerable 定義。)

System_CAPS_pubmethod Min

已重載。 調用轉換函數對序列的每個元素,並返回所需的最低 Double 值。(由 Enumerable 定義。)

System_CAPS_pubmethod Min

已重載。 調用轉換函數對序列的每個元素,並返回所需的最低 Int32 值。(由 Enumerable 定義。)

System_CAPS_pubmethod Min

已重載。 調用轉換函數對序列的每個元素,並返回所需的最低 Int64 值。(由 Enumerable 定義。)

System_CAPS_pubmethod Min

已重載。 調用轉換函數對序列的每個元素,並返回最小值可以為 null Decimal 值。(由 Enumerable 定義。)

System_CAPS_pubmethod Min

已重載。 調用轉換函數對序列的每個元素,並返回最小值可以為 null Double 值。(由 Enumerable 定義。)

System_CAPS_pubmethod Min

已重載。 調用轉換函數對序列的每個元素,並返回最小值可以為 null Int32 值。(由 Enumerable 定義。)

System_CAPS_pubmethod Min

已重載。 調用轉換函數對序列的每個元素,並返回最小值可以為 null Int64 值。(由 Enumerable 定義。)

System_CAPS_pubmethod Min

已重載。 調用轉換函數對序列的每個元素,並返回最小值可以為 null Single 值。(由 Enumerable 定義。)

System_CAPS_pubmethod Min

已重載。 調用轉換函數對序列的每個元素,並返回所需的最低 Single 值。(由 Enumerable 定義。)

System_CAPS_pubmethod Min

已重載。 調用泛型序列的每個元素的轉換函數,並返回最小的結果值。(由 Enumerable 定義。)

System_CAPS_pubmethod Nodes

返回源集合中的每個文檔和元素節點的子集合。(由 Extensions 定義。)

System_CAPS_pubmethod OfType

篩選的元素 IEnumerable 根據指定的類型。(由 Enumerable 定義。)

System_CAPS_pubmethod OrderBy

已重載。 按根據某個鍵按升序對序列的元素進行排序。(由 Enumerable 定義。)

System_CAPS_pubmethod OrderBy

已重載。 按使用指定的比較器按升序對序列的元素進行排序。(由 Enumerable 定義。)

System_CAPS_pubmethod OrderByDescending

已重載。 按根據某個鍵按降序對序列的元素進行排序。(由 Enumerable 定義。)

System_CAPS_pubmethod OrderByDescending

已重載。 使用指定的比較器按降序對序列的元素排序。(由 Enumerable 定義。)

System_CAPS_pubmethod Remove

已重載。 從其父節點與源集合中刪除每個節點。(由 Extensions 定義。)

System_CAPS_pubmethod Reverse

反轉序列中元素的順序。(由 Enumerable 定義。)

System_CAPS_pubmethod Select

已重載。 將序列中的每個元素投影到新表單。(由 Enumerable 定義。)

System_CAPS_pubmethod Select

已重載。 通過合並元素的索引投影到一個新窗體的序列的每個元素。(由 Enumerable 定義。)

System_CAPS_pubmethod SelectMany

已重載。 一個序列的每個元素投影 IEnumerable 並將合並為一個序列將結果序列。(由 Enumerable 定義。)

System_CAPS_pubmethod SelectMany

已重載。 一個序列的每個元素投影 IEnumerable, ,並將合並為一個序列將結果序列。 每個源元素的索引用於該元素的投影表。(由 Enumerable 定義。)

System_CAPS_pubmethod SelectMany

已重載。 一個序列的每個元素投影 IEnumerable, 將平展為一個序列,將結果序列,其中調用結果選擇器函數對每個元素。(由 Enumerable 定義。)

System_CAPS_pubmethod SelectMany

已重載。 一個序列的每個元素投影 IEnumerable, 將平展為一個序列,將結果序列,其中調用結果選擇器函數對每個元素。 每個源元素的索引用於該元素的中間投影表。(由 Enumerable 定義。)

System_CAPS_pubmethod SequenceEqual

已重載。 確定兩個序列是否相等的元素進行比較通過使用相應類型的默認相等比較器。(由 Enumerable 定義。)

System_CAPS_pubmethod SequenceEqual

已重載。 確定兩個序列是否通過使用指定的比較它們的元素相等 IEqualityComparer。(由 Enumerable 定義。)

System_CAPS_pubmethod Single

已重載。 返回序列的唯一元素;如果該序列並非恰好包含一個元素,則會引發異常。(由 Enumerable 定義。)

System_CAPS_pubmethod Single

已重載。 返回序列中滿足指定條件的唯一元素;如果有多個這樣的元素存在,則會引發異常。(由 Enumerable 定義。)

System_CAPS_pubmethod SingleOrDefault

已重載。 返回一個序列,或默認值的唯一元素,如果序列為空,則為如果序列中存在多個元素,則此方法將引發異常。(由 Enumerable 定義。)

System_CAPS_pubmethod SingleOrDefault

已重載。 返回序列中滿足指定條件的唯一元素;如果這類元素不存在,則返回默認值;如果有多個元素滿足該條件,此方法將引發異常。(由 Enumerable 定義。)

System_CAPS_pubmethod Skip

跳過指定的數量的序列中的元素,然后返回剩余元素。(由 Enumerable 定義。)

System_CAPS_pubmethod SkipWhile

已重載。 只要指定的條件為 true,然后返回剩余元素,跳過序列中的元素。(由 Enumerable 定義。)

System_CAPS_pubmethod SkipWhile

已重載。 只要指定的條件為 true,然后返回剩余元素,跳過序列中的元素。 將在謂詞函數的邏輯中使用元素的索引。(由 Enumerable 定義。)

System_CAPS_pubmethod Sum

已重載。 計算的序列的和 Decimal 通過調用對輸入序列中的每個元素的轉換函數獲得的值。(由 Enumerable 定義。)

System_CAPS_pubmethod Sum

已重載。 計算的序列的和 Double 通過調用對輸入序列中的每個元素的轉換函數獲得的值。(由 Enumerable 定義。)

System_CAPS_pubmethod Sum

已重載。 計算的序列的和 Int32 通過調用對輸入序列中的每個元素的轉換函數獲得的值。(由 Enumerable 定義。)

System_CAPS_pubmethod Sum

已重載。 計算的序列的和 Int64 通過調用對輸入序列中的每個元素的轉換函數獲得的值。(由 Enumerable 定義。)

System_CAPS_pubmethod Sum

已重載。 計算可以為 null 的序列的和 Decimal 通過調用對輸入序列中的每個元素的轉換函數獲得的值。(由 Enumerable 定義。)

System_CAPS_pubmethod Sum

已重載。 計算可以為 null 的序列的和 Double 通過調用對輸入序列中的每個元素的轉換函數獲得的值。(由 Enumerable 定義。)

System_CAPS_pubmethod Sum

已重載。 計算可以為 null 的序列的和 Int32 通過調用對輸入序列中的每個元素的轉換函數獲得的值。(由 Enumerable 定義。)

System_CAPS_pubmethod Sum

已重載。 計算可以為 null 的序列的和 Int64 通過調用對輸入序列中的每個元素的轉換函數獲得的值。(由 Enumerable 定義。)

System_CAPS_pubmethod Sum

已重載。 計算可以為 null 的序列的和 Single 通過調用對輸入序列中的每個元素的轉換函數獲得的值。(由 Enumerable 定義。)

System_CAPS_pubmethod Sum

已重載。 計算的序列的和 Single 通過調用對輸入序列中的每個元素的轉換函數獲得的值。(由 Enumerable 定義。)

System_CAPS_pubmethod Take

從序列的開頭返回指定的數量的連續元素。(由 Enumerable 定義。)

System_CAPS_pubmethod TakeWhile

已重載。 返回序列中的元素,只要指定的條件為真。(由 Enumerable 定義。)

System_CAPS_pubmethod TakeWhile

已重載。 返回序列中的元素,只要指定的條件為真。 將在謂詞函數的邏輯中使用元素的索引。(由 Enumerable 定義。)

System_CAPS_pubmethod ToArray

創建一個數組,從 IEnumerable。(由 Enumerable 定義。)

System_CAPS_pubmethod ToDictionary

已重載。 創建 Dictionary 從 IEnumerable 根據指定的鍵選擇器函數。(由 Enumerable 定義。)

System_CAPS_pubmethod ToDictionary

已重載。 創建 Dictionary 從 IEnumerable 根據指定的鍵選擇器函數和鍵比較器。(由 Enumerable 定義。)

System_CAPS_pubmethod ToDictionary

已重載。 創建 Dictionary 從 IEnumerable 根據指定的鍵選擇器和元素選擇器函數。(由 Enumerable 定義。)

System_CAPS_pubmethod ToDictionary

已重載。 創建 Dictionary 從 IEnumerable 根據指定的鍵選擇器函數、 比較器和元素選擇器函數。(由 Enumerable 定義。)

System_CAPS_pubmethod ToList

創建 List 從 IEnumerable。(由 Enumerable 定義。)

System_CAPS_pubmethod ToLookup

已重載。 創建 Lookup 從 IEnumerable 根據指定的鍵選擇器函數。(由 Enumerable 定義。)

System_CAPS_pubmethod ToLookup

已重載。 創建 Lookup 從 IEnumerable 根據指定的鍵選擇器函數和鍵比較器。(由 Enumerable 定義。)

System_CAPS_pubmethod ToLookup

已重載。 創建 Lookup 從 IEnumerable 根據指定的鍵選擇器和元素選擇器函數。(由 Enumerable 定義。)

System_CAPS_pubmethod ToLookup

已重載。 創建 Lookup 從 IEnumerable 根據指定的鍵選擇器函數、 比較和元素選擇器函數。(由 Enumerable 定義。)

System_CAPS_pubmethod Union

已重載。 通過使用默認的相等比較器生成的兩個序列的並集。(由 Enumerable 定義。)

System_CAPS_pubmethod Union

已重載。 使用指定的生成兩個序列的並集 IEqualityComparer。(由 Enumerable 定義。)

System_CAPS_pubmethod Where

已重載。 基於謂詞篩選值序列。(由 Enumerable 定義。)

System_CAPS_pubmethod Where

已重載。 基於謂詞篩選值序列。 將在謂詞函數的邏輯中使用每個元素的索引。(由 Enumerable 定義。)

System_CAPS_pubmethod Zip

適用於兩個序列,生成的結果序列的相應元素指定的函數。(由 Enumerable 定義。)

 

下面列舉幾個擴展方法實現的示例:(VS 2014 環境)

示例1:

Sum擴展方法:

新建如下幾個類:

book.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace IEnumerableSum
{
    /// <summary>
    /// 數據模型
    /// </summary>
    public class Book
    {
        public string Name { get; set; }
        public decimal Price { get; set; }
    }
}

Shopping.cs 如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace IEnumerableSum
{
    /// <summary>
    /// 表示 Book 對象集合
    /// </summary>
    public class Shopping
    {
        private ValueCalculator vc;
 
        public Shopping(ValueCalculator vcParam)
        {
            vc = vcParam;
        }
        public IEnumerable<Book> Books { get; set; }
 
        public decimal CalculateBookTotal()
        {
            return vc.ValueBooks(Books);
        }
    }
}

ValueCalculator.cs 如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace IEnumerableSum
{
    public class ValueCalculator
    {
        /// <summary>
        /// 定義了一個單一的方法ValueBooks,使用了IEnumerable的Sum方法將傳遞給該方法的可枚舉對象中每一個 Book 對象的Price 屬性值在一起
        /// </summary>
        /// <param name="books">該方法的可枚舉對象</param>
        /// <returns></returns>
        public decimal ValueBooks(IEnumerable<Book> books)
        {
            return books.Sum(b => b.Price);
        }
    }
}

PS: 如果不理解 books.Sum(b => b.Price) ,可以查看 C# lambda 表達式。也可以擦汗查看本人MVC中的 lambda 案例,參閱

ASP.NET + MVC5 入門完整教程四---MVC 中使用擴展方法

Program.cs 如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace IEnumerableSum
{
    class Program
    {
        static void Main(string[] args)
        {
           
            decimal totalPrice;
            Book[] books =
            {
              new Book { Name = "Coho Vineyard", Price = 25.2M },
              new Book { Name = "Lucerne Publishing", Price = 18.7M },
              new Book { Name = "Wingtip Toys", Price = 6.0M },
              new Book { Name = "Adventure Works", Price = 33.8M }
            };
 
            ValueCalculator vc = new ValueCalculator();
            Shopping sp = new Shopping(vc) { Books = books };
            totalPrice = sp.CalculateBookTotal();
            Console.WriteLine("The total weight of the packages is: {0}", totalPrice);
            Console.ReadKey();
 
        }
 
        public decimal ValueBooks(IEnumerable<Book> books)
        {
            return books.Sum(b => b.Price);
        }
    }   
}

運行結果如下圖所示:

其他擴展方法具體實現可參見官方示例   點擊打開鏈接


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM