iT邦幫忙

2022 iThome 鐵人賽

DAY 11
0
自我挑戰組

C# 和 SQL 探索之路系列 第 11

Day 11: C# LINQ 介紹

  • 分享至 

  • xImage
  •  

LINQ 是什麼 ? 名詞介紹

  • 全名為 Language-Integrated Query,提供類似於 SQL 語法的關鍵字,可在 C# 語言環境中提供可操作的物件。常見的包含:
  • LINQ to Entities: LINQ 針對 Entity Framework 模型撰寫的查詢語法,可參考 LINQ to Entities - ADO.NET - Microsoft Docs
  • LINQ to SQL: LINQ 會將語法轉為 SQL 查詢語法,與 LINQ to Entities 不同,可參考 LINQ to SQL - ADO.NET - Microsoft Docs

除此以外,LINQ 也可以操作其它集合、服務或物件,例如第三方元件的 Json.NET 就支援 LINQ to JSON,用 LINQ 查詢 JSON 內的資料。

LINQ 的特色

  1. 使用類似 SQL 的語法,常撰寫資料庫語法的人,可提高熟悉度。
  2. 可直接對物件操作,查詢結果也為可操作的物件集合。
  3. 可以使用先前提到的泛型技術,對集合型態查詢,而不必煩惱查詢的資料型態。
  4. 如先前所提到,可以用 var 取得查詢結果,不用預先定義查詢結果的類別。

運算子

以下是一份程式碼範例,包含物件的結構,以及使用 LINQ 查詢物件,該段 LINQ 的語法包含常用的運算子: FROM, SELECT, WHERE 等。

using System;
using System.Linq;
                    
public class Program
{
    public class employee{
        public string name;
        public string country;
        
        public employee(string n, string c){
            this.name = n;
            this.country = c;
        }
    }
    
    public static void Main()
    {
        employee[] emp = new employee[3];
        emp[0] = new employee("jacky", "taiwan");
        emp[1] = new employee("annie", "america");
        emp[2] = new employee("jeff", "taiwan");
        
        var p = from a in emp
            where a.country.Equals("america")
            select a.name;
        
        foreach(var t in p.AsEnumerable()){
            Console.WriteLine(t.ToString());
        }
    }
}

更多能使用的運算子可以參考微軟的官方文件:


上一篇
Day 10: C# 泛型 (Generic) 概念
下一篇
Day 12: C# 用 LINQ 操作 DataTable
系列文
C# 和 SQL 探索之路30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言