iT邦幫忙

0

[自學筆記]LINQ資料查詢技術

  • 分享至 

  • xImage
  •  

LINQ(發音為link 但很多人都說LIN Q/images/emoticon/emoticon01.gif)
最大的特質是具備資料查詢的能力以及和 VB、C#語言進行整合的能力,
可同時配合 Entity Framework 來存取 SQL Server 資料來源。

LINQ依使用對象可分為以下幾種技術類型:

1. LINQ to Objects

或稱為 LINQ to Collection,可以查詢實作 IEnumerable 或 IEnumerable介
面的集合物件,如查詢陣列、List、集合、檔案...等物件。

2. LINQ to AML

使用於 XML 查詢技術的 API,透過 LINQ 查詢運算式可以不需要再額外學
習 xPath 或 xQuery ,就可以查詢或排序 XML文件。

3. LINQ to DataSet

透道 LINQ 查詢運算式,可以對記憶體內的 Dataset 或 Data Tble 進行查詢。

4. LINQ to SQL

可以對實作 IQueryable介面的物件做查詢,也可以直接對 SOL Server 和
SQL Server Express 資料庫進行查詢與編輯。此功能目前由 Entity Framework
與LINQ to Entity 所取代, ASP.NET MVC 最常使用 Entity Framework 來
當做 Model技術。

LINQ 查詢運算式 (Query Expression) 先透過 from 關鍵字來指定欲查詢的資料 集合以及進行資料逐一處理時所需使用的變數名稱和型別,類似使用 forcach 迴圈 的方式,將集合內查詢出來的物件逐一取出並放置到區域變數中進行比對,語法中 可以進一步使用where 條件來過濾資料,然後再使用 orderby 來指定符合條件物件 的排序方式,最後使用 select 子句來指定每次比對後所要得到的查詢結果 ,或使用
select new 指定要取得的新物件並且同時指定該物件之屬性,最後再將整個LINQ的
查詢結果儲存到一個指定的變數。LINQ 查詢語法如下:

var 變數 = from[資料型別] 範圍變數 in 集合
           where <條件>
           orderby 欄位名稱1 [ascending|descending][,欄位名稱2[...]]
           select new{[別名1=] 欄位名稱1 [,[別名2=] 欄位名稱2[...] ]};

ex:將陣列 遞減排序 及 加總

public class DefaultController : Controller
    {
        // GET: Default
        public string ShowArrayDesc()
        {
            int[] score = new int[] { 78, 99, 20, 100, 66 };
            string show = "";
            //LINQ擴充方法寫法
            //使用LINQ的OrderByDescending方法將score陣列進行遞減排序
            var result = score.OrderByDescending(m => m);
            //LINQ查詢運算式寫法(同上面那行用法)
            //將score陣列進行遞減排序 並將結果指定給result
            //var result = from m in score
            //             orderby m descending
            //             select m;
            show = "遞減排序:";
            foreach (var m in result)
            {
                show += m + ",";

            }
            show += "<br />";
            //使用LINQ的sum方法將score陣列進行加總
            show += "總和:" + result.Sum();
            return show;
        }
    }

顯示的結果~
https://ithelp.ithome.com.tw/upload/images/20220508/20135530nUKvgwpGGU.jpg

LINQ方法

撰寫 LINQ 查詢時可以使用前面所介紹的查詢運算式(Query Expression)和方法語法(Fluent Syntax)。
LINQ 方法之語法基本上是以擴充方法和 Lambda 表達式來建立查詢。 查詢運鼻式與方法語法兩者執行結果雖然相同,但大部份的情況使用 LNQ
方法在寫法上會比較簡潔,若是查詢運算式語法過多(例如使用 Join 來進行合併),
則使用方法語法會比較不容易撰寫,因此開發人員可視實際倩況來選擇 LINQ 查詢
運算式或是 LINQ 方法語法。LINQ 方法語法如下:

var 變數 = 集合.LINQ擴充方法(Lamdba運算式)

ex:

var result = score.OrderBy(m => m);

內容參考自:跟著實務學習ASP NET MVC


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言