程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> 關於.NET >> LinQ to SQL用法詳解,linqsql用法詳解

LinQ to SQL用法詳解,linqsql用法詳解

編輯:關於.NET

LinQ to SQL用法詳解,linqsql用法詳解


LinQ是指集成化查詢語言,通過映射將數據庫內的表名變為C#的類名,將列名作為屬性名,將表的關系作為類的成員對象。O--M--R

O-Object對象
R-Relation關系
M-Mapping映射

LinQ包括:LinQ to SQL,針對SQL的查詢,它是一個帶有可視化的操作界面的ORM工具。

               LinQ to Object,用來實現對內存中集合對象的查詢。

               LinQ to DataSet,對強類型化或弱類型化的DataSet或獨立的DataTable進行查詢。

               LinQ to Entity,對實體框架中EDM定義的實體集合進行查詢。

(一):LinQ to SQL

第一步:建立LinQ2SQL類

添加一個新建項,選擇LinQ to SQL,將用到的表拖進來。

第二步:實例化上下文對象,基本所有操作都是通過上下文對象來進行的。

MyDBDataContext context = new MyDBDataContext();

第三步:操作

一、增加數據:

1.造一個要添加的數據對象:

Info data = new Info();
data.Code = "p211";
data.Name = "石頭";
data.Sex = false;
data.Nation = "N001";
data.Birthday = new DateTime(1990, 1, 2);

2.在上下文中注冊上面新造的對象。

context.Info.InsertOnSubmit(data);

3.提交執行

context.SubmitChanges();

二、刪除:

1. 找出要刪除的數據

MyDBDataContext context = new MyDBDataContext();
var q = context.Info.Where(p => p.Code == "p003");

2. 刪除注冊

 if (q.Count() > 0)
{
     Info data = q.First();
    //注冊
    context.Work.DeleteAllOnSubmit(data.Work);
    context.Family.DeleteAllOnSubmit(data.Family);
    context.Info.DeleteOnSubmit(data);
}

3. 提交執行

context.SubmitChanges();

三、修改:

1. 找出要修改的數據

MyDBDataContext context = new MyDBDataContext();
var q = context.Info.Where(p=>p.Code == "p001");

2. 改,不用注冊

if (q.Count() > 0)
{
    Info data = q.First();
    //改
    data.Name = "胡生";
    data.Nation = "n001";
    data.Sex = false;
}

3. 提交執行

context.SubmitChanges();

四、查詢:

1.查所有

 MyDBDataContext context = new MyDBDataContext();
//所有人員
var q = context.Info;
//var q = from p in context.Info select p;
//顯示
foreach(Info data in q)
{
    //data.Nation1:當前人員對應的民族對象。
    Console.WriteLine(data.Name+"\t"+data.Nation1.Name);
    //data.Work:當前人員對應的工作記錄集合
    foreach (Work work in data.Work)
    {
        Console.WriteLine("\t"+work.Firm+"\t"+work.Depart);
    }
}

2. 根據主鍵查詢(條件查詢),默認返回的都是集合。

var q = from p in context.Info where p.Code == "p211" select p;
var q = context.Info.Where(p => p.Code == "p211").Where(p => p.Nation1.Name == "漢族"); //Lambda表達式(最最簡化的函數,只有參數和函數體的匿名函數)
var q = context.Info.Where(p => p.Code == "p211" && p.Nation1.Name=="漢族");
var q = context.Info.Where(p => p.Code == "p211"); //默認返回的是集合
if (q.Count() > 0)    //看看集合中是否查出數據來了
{
    Info data = q.First(); //取第一個對象出來
    Console.WriteLine(data.Nation1.Name + data.Name);
}

3. 多條件查詢

var q = from p in context.Car where p.Price > 30 && p.Brand=="b002" select p;
var q = context.Car.Where(p => p.Price > 30 && p.Brand == "b002");
var q = context.Car.Where(p => p.Price > 30).Where(p => p.Brand == "b002");
var q = from p in context.Car where p.Price > 30 || p.Brand == "b002" select p;
var q = context.Car.Where(p => p.Price > 30 || p.Brand == "b002");

4. 模糊查詢

var q = from p in context.Car where p.Name.Contains("5") select p; //包含
var q = from p in context.Car where p.Name.StartsWith("奧迪") select p;//開頭
var q = from p in context.Car where p.Name.EndsWith("奧迪") select p;//結尾
var q = context.Car.Where(p => p.Name.Contains("5"));//包含
var q = context.Car.Where(p => p.Name.StartsWith("奧迪"));//開頭
var q = context.Car.Where(p => p.Name.EndsWith("型"));//結尾
var q = from p in context.Car where p.Name.Substring(2, 1) == "5" select p;//第三個字符
var q = context.Car.Where(p => p.Name.Substring(2,1) == "5");//第三個字符是5

5. Distinct查詢

var q = (from p in context.Car select p.Brand).Distinct();//去重
var q = context.Car.Select(p=>p.Brand).Distinct();//去重

6. 連接查詢——對象之間的關聯關系點出來的。

var q = context.Car.Where(p => p.Brand1.Productor.Prod_Name=="一汽豐田");

7. 去重查詢出顯示,IEnumerable是集合的根類型

static void Show(IEnumerable<string> q)
{
    foreach (string d in q)
    {
        Console.WriteLine(d);
    }
}

8. 統計查詢

MyDBDataContext context = new MyDBDataContext();
//var query = from p in context.Car select p;
var query = context.Car;//查出所有
Console.WriteLine(query.Count());//統計個數
Console.WriteLine(query.Max(p => p.Price));//價格的最大值
Console.WriteLine(query.Min(p => p.Price));//價格的最小值
Console.WriteLine(query.Max(p => p.Price * p.Oil));//價格乘以油耗的最大值
Console.WriteLine(query.Sum(p => p.Price));//價格求和
Console.WriteLine(query.Sum(p => p.Price * p.Oil));//價格乘以油耗之後求和
Console.WriteLine(query.Average(p => p.Price));//價格平均值

9. 分頁查詢

//分頁
MyDBDataContext context = new MyDBDataContext();
var query = context.Car.Skip(2 * 4).Take(4);//每頁4條數據,要查第三頁的4條數據,跳過8條取下面4條
Show(query);

10. 排序查詢

//排序
MyDBDataContext context = new MyDBDataContext();
//var query = context.Car.OrderBy(p=>p.Price); //升序
var query = context.Car.OrderByDescending(p => p.Price);//降序
Show(query);

11. 集合操作

//集合操作
MyDBDataContext context = new MyDBDataContext();
var query1 = context.Car.Where(p => p.Brand1.Productor.Prod_Name == "一汽豐田");
var query2 = context.Car.Where(p => p.Price > 30);

//交集
var query = query1.Intersect(query2);
//並集
//var query = query1.Union(query2);
//差集
//var query = query1.Except(query2);
//補集
//var query = context.Car.Except(query1);
Show(query);

以上是關於LINQ的一些基本用法,LINQ實用起來非常方便,同時功能也很強大,很好用。

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved