EnriqueMark
隨筆

LINQ

2026-04 繁體中文

這個有點意思,叫做「語言整合查詢」(Language Integrated Query),可以在C#裡用類似sql的查詢方法,只要是列舉類都可以用這個。

/// 沒有 LINQ 的寫法
var result = new List<string>();
foreach (var f in files)
{
    if (f.Contains(keyword))
        result.Add(f);
}

/// 有 LINQ 的寫法
var result = files.Where(f => f.Contains(keyword)).ToList();

常用方法:

方法作用
.Where()篩選(過濾條件)
.Select()轉換(這個就是map,對每個元素執行自定函式操作)
.FirstOrDefault()取第一個,沒有就返回 null
.Any()有沒有符合條件的元素
.Count()計算數量
.OrderBy()排序
.ToList() / .ToArray()具體化結果
.ToHashSet()轉為雜湊Set(去重),元素可以給入去重規則
規則的型別需要是IEqualityComparer<T>

然後這裡的關鍵是,查詢的描述跟最終的執行是分開的,所以必須用 ToList() 或者是 ToArray() 立即執行,亦或者是需要的時候再調這個去執行。

ListArray 大部分情況下差不多,但最大的不同就是前者可以隨時增減,而後者是固定的。如果是不會變動的場景,後者會比較合適,因為效能更高。而如果需要隨時增減,那就得用前者了。