Presentation is loading. Please wait.

Presentation is loading. Please wait.

LINQ 建國科技大學 資管系 饒瑞佶.

Similar presentations


Presentation on theme: "LINQ 建國科技大學 資管系 饒瑞佶."— Presentation transcript:

1 LINQ 建國科技大學 資管系 饒瑞佶

2 LINQ 將原本查詢陣列、XML、JSON、資料庫等資料的不同查詢方式統 一
可以與VB或C#語法整合使用(Language-Integrated Query) 可以與.NET Entity Framework整合 .NET Framework 3.5以後才支援 可以細分為LINQ to Objects、LINQ to XML、LINQ to DataSet、LINQ to SQL(LINQ to Entity)

3 使用方式 LINQ 查詢運算式Query Syntax(比較接近SQL指令) var 變數 = from 變數 in 集合 where 條件
order by 欄位 [ascending | descending] select new {欄位}; LINQ方法Method Syntax(寫法比較精簡) var 變數 = 集合.LINQ方法(Lambda運算式); 方法可以是Count、Sum、Min、Max、Average…

4 example int[] numbers = { 5, 10, 8, 3, 6, 12 };
// LINQ 查詢運算式 Query syntax IEnumerable<int> numQuery1 = from num in numbers where num % 2 == 0 orderby num select num; //LINQ方法 Method syntax IEnumerable<int> numQuery2 = numbers.Where(num => num % 2 == 0).OrderBy(n => n); foreach (int i in numQuery1) { label1.Text += (i + "\n"); } label1.Text += System.Environment.NewLine; foreach (int i in numQuery2) example

5 LINQ to SQL 建立Class Member 與 資料 class Member {
public string id { get; set; } public string pwd { get; set; } public string name { get; set; } public int age { get; set; } } Member[] members = new Member[] { new Member {id="aa",pwd="111",name="a",age=11 }, new Member {id="bb",pwd="222",name="b",age=22 }, new Member {id="cc",pwd="333",name="c",age=33 } };

6 LINQ to SQL 做個類似帳密查詢的功能
var result = (from m in members where m.id == "aa" && m.pwd == "111" select m).FirstOrDefault(); if (result != null) MessageBox.Show(result.name); // LINQ 方法 var result1 = members.Where(m => m.id == "bb" && m.pwd == "222").FirstOrDefault(); if (result1 != null) MessageBox.Show(result1.name);

7 LINQ to SQL整合Entity Framework
首先加入ADO.NET實體資料模型

8 選擇Database-First的EF

9 選擇要連結的資料庫 使用EF 6.X版本建構 未來使用的Entity名稱

10 選擇要放入EF的資料表

11 建立後的EF Model

12 App.config中建立起連線字串

13 使用EF Model 直接使用datagridview顯示全部資料
NorthwindEntities db = new NorthwindEntities(); private void button1_Click(object sender, EventArgs e) { bindingSource1.DataSource= db.Customers.ToList(); dataGridView1.DataSource= bindingSource1; }

14 加入LINQ to SQL查詢 private void button2_Click(object sender, EventArgs e)
{ // 完全比對 //dataGridView1.DataSource = db.Customers.Where(a=> a.CompanyName == textBox1.Text).ToList(); // 模糊比對 dataGridView1.DataSource = db.Customers.Where(a => a.CompanyName.Contains(textBox1.Text)).ToList(); }

15 透過EF新增資料 private void button3_Click(object sender, EventArgs e) {
// 建立一個Customers資料表的物件cus Customers cus = new Customers(); // 設定欄位值 cus.CustomerID = "ctuim"; cus.CompanyName = "ctu"; cus.Address = "ChangHua"; db.Customers.Add(cus); // 加入資料物件cus db.SaveChanges(); // 更新同步資料庫 // 重新整理datagridview bindingSource1.DataSource = db.Customers.ToList(); dataGridView1.DataSource = bindingSource1; }

16 從datagridview刪除資料 private void dataGridView1_UserDeletingRow(object sender, DataGridViewRowCancelEventArgs e) { var p = (Customers)bindingSource1.Current; db.Customers.Remove(p); db.SaveChanges(); // 更新記憶體中的EF foreach (var entity in db.ChangeTracker.Entries()) entity.Reload(); } dataGridView1.DataSource = bindingSource1;

17 修改 直接從datagridview修改後 執行下列指令就可以 db.SaveChanges();


Download ppt "LINQ 建國科技大學 資管系 饒瑞佶."

Similar presentations


Ads by Google