LINQ是 C# 中的一個功能,它允許您使用類似 SQL 的語法來查詢、過濾和操作集合(如陣列、列表、資料庫表格等)。
LINQ 允許您使用一種統一的語法來執行各種資料操作,包括篩選、排序、投影、分組等。LINQ 適用於各種 .NET 集合,以及 Entity Framework 和其他資料來源。
LINQ 也可以使用方法語法,這是一種使用擴充方法(extension methods)的方式。方法語法的主要操作包括 `Where`、`Select`、`OrderBy`、`GroupBy` 等。
`Where` 方法用於篩選集合中符合特定條件的元素。
var filtered = collection.Where(element => condition);
int[] numbers = { 1, 2, 3, 4, 5 };
var evenNumbers = numbers.Where(num => num % 2 == 0);
foreach (var num in evenNumbers)
{
Console.WriteLine(num); // 輸出:2, 4
}
`Select` 方法用於對集合中的每個元素執行投影操作,以生成新的序列。
var projected = collection.Select(element => projection);
string[] names = { "Alice", "Bob", "Charlie" };
var nameLengths = names.Select(name => name.Length);
foreach (var num in nameLengths)
{
Console.WriteLine(num); // 輸出:5, 3, 7
}
`OrderBy` 方法用於對集合中的元素進行升序排序。
var sorted = collection.OrderBy(element => key);
int[] numbers = { 5, 2, 4, 1, 3 };
var sortedNumbers = numbers.OrderBy(num => num);
foreach (var num in sortedNumbers)
{
Console.WriteLine(num); // 輸出: 1, 2, 3, 4, 5
}
`GroupBy` 方法用於根據指定的鍵值將集合中的元素分組。
var grouped = collection.GroupBy(element => key);
string[] names = { "Alice", "Bob", "Charlie", "David" };
var nameGroups = names.GroupBy(name => name[0]);
`First` 方法用於獲取集合中的第一個元素,而 FirstOrDefault 方法則用於獲取第一個元素,如果集合為空則返回預設值。
var firstElement = collection.First();
var firstMatchingElement = collection.First(element => condition);
var firstOrDefaultElement = collection.FirstOrDefault();
var firstOrDefaultMatchingElement = collection.FirstOrDefault(element => condition);
int[] numbers = { 1, 2, 3, 4, 5 };
var firstNumber = numbers.First();
var firstEvenNumber = numbers.FirstOrDefault(num => num % 2 == 0);
Console.WriteLine(firstEvenNumber); // 輸出:2
LINQ 查詢語法類似於 SQL 查詢語言,它由 from 子句、where 子句、select 子句等組成。查詢語法的主要組件如下:
from
子句:指定資料來源和範圍變數。where
子句:定義篩選條件。select
子句:選取要返回的元素或投影結果。var query = from element in collection
select element;
int[] numbers = { 1, 2, 3, 4, 5 };
var query = from num in numbers
select num;
foreach (var num in query)
{
Console.WriteLine(num); // 輸出:1, 2, 3, 4, 5
}
var query = from element in collection
where condition
select element;
int[] numbers = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
var evenNumbers = from num in numbers
where num % 2 == 0
select num;
foreach (var num in evenNumbers)
{
Console.WriteLine(num); // 輸出偶數:2, 4, 6, 8, 10
}
var query = from element in collection
orderby element
select element;
int[] numbers = { 5, 2, 4, 1, 3 };
var query = from num in numbers
orderby num
select num;
foreach (var num in query)
{
Console.WriteLine(num); // 輸出:1, 2, 3, 4, 5
}
var query = from element in collection
select projection;
string[] names = { "Alice", "Bob", "Charlie" };
var query = from name in names
select name.Length;
foreach (var name in query)
{
Console.WriteLine(name); // 輸出:5, 3, 7
}
程式語法:
var query = from element in collection
group element by key;
程式範例(將一組字串按首字母分組):
string[] names = { "Alice", "Bob", "Charlie", "David" };
var query = from name in names
group name by name[0];
var query = from element in collection
where condition1 && condition2
select element;
int[] numbers = { 1, 2, 3, 4, 5 };
var query = from num in numbers
where num > 2 && num < 5
select num;
foreach (var name in query)
{
Console.WriteLine(name); // 輸出:3, 4
}
LINQ 也可與 Entity Framework 或 LINQ to SQL 等資料庫技術結合使用,以執行資料庫查詢操作。這使您能夠使用 LINQ 語法查詢和操作資料庫中的資料。
題目:
有一個string List:{ "Alice", "Bob", "Charlie", "David", "Eva" },使用 LINQ 方法語法查詢一個字串列表中包含字母 "a" 的字串。
程式實作:
List<string> names = new List<string> { "Alice", "Bob", "Charlie", "David", "Eva" };
var filteredNames = names.Where(name => name.Contains("a"));
foreach (var name in filteredNames)
{
Console.WriteLine(name); // 輸出包含字母 "a" 的名字
}
期望挑戰30天持續更新成功 ~ DAY18