
C# LINQ 基本集合操作
LINQ(Language-Integrated Query)是一組以直接將查詢功能整合至 C# 語言為基礎之技術。 透過 LINQ,查詢會是第一級語言建構,和類別、方法及事件相同。可以利用最少的程式碼,針對資料來源執行篩選、排序及分組作業,使資料操作更直觀且可讀性更高。本篇文章將介紹 C# 中 LINQ 的用法,包括篩選、排序等,並說明它們的特性和使用方式,讓您能夠充分利用 LINQ 來簡化資料操作。
篩選
在 LINQ 中,可以使用 Where 方法進行資料的篩選。Where 方法接受一個條件表達式,返回符合條件的元素。
var numbers = new int[] { 1, 2, 3, 4, 5 };
//篩選陣列中2的倍數
var evenNumbers = numbers.Where(n => n % 2 == 0);
排序
LINQ 提供了 OrderBy 和 OrderByDescending 方法來對資料進行排序。可以根據元素的屬性或條件進行升冪或降冪排序。
//建立Customer清單
var Customers = new List<Customer>(){
new Customer {Id = 1, Name="Yvonne", Age=27, Credits = 124},
new Customer {Id = 2, Name="Kelly", Age=20, Credits = 200},
new Customer {Id = 3, Name="Ken", Age=36, Credits = 155},
new Customer {Id = 4, Name="William", Age=30, Credits = 155},
new Customer {Id = 5, Name="Lala", Age=31, Credits = 111}
};
//依據年齡排序清單
var sortedCustomers = Customers.OrderBy(c => c.Age);
var sortedCustomersDescending = Customers.OrderByDescending(c => c.Age);
除了利用 OrderBy 和 OrderByDescending 方法根據特定屬性進行排序,也可以利用ThenBy和 ThenByDescending 方法進行多條件排序。
//先依據姓名排序再依據年齡排序
var sortedCustomers = Customers.OrderBy(c => c.Name).ThenBy(c.Age);
var sortedCustomersDescending = Customers.OrderBy(c => c.Name).OrderByDescending(c => c.Age);
投影
使用 Select 方法可以對資料進行投影,即從原始資料中選取需要的屬性或值。
var Customers = new List<Customer>(){ /*...*/ };
//從清單中提取姓名屬性
List<string> names = Customers.Select(p => p.Name).ToList();
//從清單中提取年齡屬性
List<int> ages = Customers.Select(p => p.Age).ToList();
聚合函數
LINQ 提供了許多聚合函數,如 Count、Sum、Average、Max 和 Min 等,可以對資料進行統計計算。
var numbers = new int[] { 1, 2, 3, 4, 5 };
//集合元素項目數
var count = numbers.Count();
//集合元素加總
var sum = numbers.Sum();
//集合元素平均
var average = numbers.Average();
//集合中最大值
var max = numbers.Max();
//集合中最小值
var min = numbers.Min();
查詢運算式與方法查詢
查詢語法和方法語法的語意相同,對於傳統使用SQL語法的人來說查詢運算式無痛轉換上手,較為簡單且更容易閱讀。 某些查詢必須以方法形式呼叫。 例如,擷取符合所指定條件的項目數的查詢或最大值的項目的查詢。
下列示範查詢運算式及對等語意的方法查詢。
//查詢運算式
var queryCustomer = from c in Customers
orderby c.Name, c.Age
select c;
//方法查詢
var queryOrder = Customers.OrderBy (c => c.Name).ThenBy(c => c.Age);
LINQ 是 C# 中一個強大且實用的工具,它簡化了資料操作的程式碼,提高了開發效率和可讀性。本篇文章介紹了 C# 中 LINQ 的用法,包括篩選、排序、投影、聚合和連接等操作,並說明了它們的特性和使用方式。藉助 LINQ,您可以更輕鬆地處理和操作資料。
希望本篇文章能幫助您更深入地理解 C# 中 LINQ 的強大之處,並在程式開發中充分利用 LINQ 來簡化資料操作。謝謝閱讀!