首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

C# LINQ 除 ForEach 外的其他遍歷/操作方法

     編輯:程式設計綜合問答

澄清

List.ForEach 是 List 實例方法,**非 LINQ 標準查詢操作符**。LINQ 提供豐富的延遲執行流式操作符。

常用 LINQ 操作符分類

分類操作符說明
投影/轉換Select一對一映射
SelectMany扁平化映射 (如 List> → List)
Cast / OfType類型轉換/過濾
ToArray / ToList / ToDictionary具體化集合
過濾Where條件過濾
Take / Skip分頁
TakeWhile / SkipWhile條件截取
Distinct去重
排序OrderBy / ThenBy升序/多鍵排序
OrderByDescending / ThenByDescending降序
Reverse反轉
---------
分組/聚合GroupBy分組
GroupJoin左外連接分組
Aggregate / Sum / Average / Min / Max聚合計算
Count / LongCount計數
集合運算Union / Intersect / Except並/交/差集
Concat連接
Zip兩兩配對合併
Join內連接
元素/量詞First / FirstOrDefault / Single / SingleOrDefault獲取單一元素
ElementAt / ElementAtOrDefault索引獲取
Any / All / Contains量詞判斷
DefaultIfEmpty空序列默認值

延遲執行 vs 立即執行

  • 延遲:Where, Select, OrderBy, Take... **僅構建查詢計劃**,調用 ToList()/foreach 時才執行。
  • 立即:ToList, ToArray, Count, Any, First... **立即遍歷源序列**產生結果。

自定義擴展方法示例:Batch 分批

public static IEnumerable> Batch(this IEnumerable source, int size) {
    if (size <= 0) throw new ArgumentOutOfRangeException(nameof(size));
    using (var e = source.GetEnumerator()) {
        while (e.MoveNext()) {
            var batch = new List(size) { e.Current };
            while (batch.Count < size && e.MoveNext()) batch.Add(e.Current);
            yield return batch;
        }
    }
}

// 使用
var batches = numbers.Batch(3); // 每3個一組

官方文檔

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved