C# LINQ 查詢語法(Query Syntax) 示範

假設我們有 Student 類別:
    
public class Student
{
    public int Id { get; set; }
    public string Name { get; set; }
}
    

有一個 students 清單:
    
var students = new List<Student>
{
    new() { Id = 1, Name = "大頭" },
    new() { Id = 2, Name = "小明" },
    new() { Id = 3, Name = "阿華" },
};
    

我們可以用最簡單的 LINQ 查詢語法(Query Syntax) 歷遍資料:
    
        IEnumerable<Student> enumerable =
            from student in students
            select student;
    

也可以只取得單獨的屬性:
    
IEnumerable<string> enumerable =
    from student in students
    select student.Name;

foreach (var name in enumerable)
{
    Console.WriteLine(name);
    // 大頭
    // 小明
    // 阿華
}
    

也可以使用匿名類別將資料重組:
    
var enumerable =
    from student in students
    select new
    {
        StudentId = student.Id,
        StudentName = student.Name
    };

foreach (var name in enumerable)
{
    Console.WriteLine($"{name.StudentId} {name.StudentName}");
    // 1 大頭
    // 2 小明
    // 3 阿華
}
    

使用 where 關鍵字可以將資料過濾:
    
var enumerable =
    from student in students
    where student.Id > 1
    select student.Name;
    

使用 orderby 關鍵字可以將資料排序:
    
var enumerable =
    from student in students
    where student.Id > 1
    orderby student.Id descending
    select student.Name;
    

也可以指定多個排序方式:
    
var enumerable =
    from student in students
    where student.Id > 1
    orderby student.Id descending, student.Name // 依 Id 遞減排序,再依 Name 遞增排序
    select student.Name;
    

文章撰寫中...請稍後...

參考資料:
Microsoft.Learn - Query expression basics
Microsoft.Learn - Write C# LINQ queries to query data

留言