當前位置:首頁 » 密碼管理 » linq數據訪問技術

linq數據訪問技術

發布時間: 2022-07-28 16:54:13

① 什麼是linq技術

LINQ,語言集成查詢(Language Integrated Query)是一組用於c#和Visual Basic語言的擴展。它允許編寫C#或者Visual Basic代碼以查詢資料庫相同的方式操作內存數據。
從技術角度而言,LINQ定義了大約40個查詢操作符,如select、from、in、where以及order by(C#中)。使用這些操作符可以編寫查詢語句。不過,這些查詢還可以基於很多類型的數據,每個數據類型都需要一個單獨的LINQ類型。
經過了最近 20 年,面向對象編程技術( object-oriented (OO) programming technologies )在工業領域的應用已經進入了一個穩定的發展階段。程序員現在都已經認同像 類(classes)、對象(objects)、方法(methods)這樣的語言特性。考察現在和下一代的技術,一個新的編程技術的重大挑戰開始呈現出來,即面向對象技術誕生以來並沒有解決降低訪問和整合信息數據( accessing and integrating information )的復雜度的問題。其中兩個最主要訪問的數據源與資料庫(database)和XML(標准通用標記語言下的一個應用)相關。
LINQ 提供了一條更常規的途徑即給.Net Framework添加一些可以應用於所有信息源( all sources of information )的具有多種用途( general-purpose )的語法查詢特性( query facilities ),這是比向開發語言和運行時( runtime )添加一些關系數據( relational )特性或者類似 XML 特性( XML-specific )更好的方式。這些語法特性就叫做 .NET Language Integrated Query (LINQ) 。

② 如何使用LINQ鏈接資料庫舉個例子(C#.NET)謝謝

1、在App_Code下面添加新項「LINQ
to
sql
類」
2、打開該類,設置Name屬性(例如MyLinqDB)和Connection屬性
3、伺服器資源管理器內添加資料庫連接
4、將資料庫內需要操作的表拖入LINQ
to
SQL
類的設計視圖,並保存
5、新建數據綁定控制項例如ListView1
6、後台Page_Load編寫代碼:
var
DB
=
new
MyLinqDB();
var
query
=
from
t
in
DB.T_Users
select
new
{t.ID,
t.UserName,
t.Password};
ListView1.DataSource
=
query.Where(t
=>
t.ID
>
0).Skip(3
*
20).Take(20);//每頁20,第四頁
ListView1.DataBind();

③ linq的優勢是什麼為什麼都提倡數據使用用linq呢Asp.net,C#

在Linq To Sql正式推出之前,很多人只是把sql語句形成一個string,然後,通過ADO.NET傳給SQL Server,返回結果集.這里的缺陷就是,假如你sql語句寫的有問題,只有到運行時才知道.而且並不是所有的人都懂資料庫的。Linq To SQl 在一切圍繞數據的項目內都可以使用。特別是在項目中缺少sql server方面的專家時,Linq To SQl的強大的功能可以幫我們快速的完成項目。Linq To SQl的推出,是讓大家從煩瑣的技術細節中解脫出來,更加關注項目的邏輯。Linq To Sql的出現,大大降低了資料庫應用程序開發的門楷,它實質是事先為你構架了數據訪問層,勢必將加快資料庫應用程序的開發進度。Linq To Sql解放了眾多程序員,讓他們的把更多的精力放到業務邏輯以及code上,而不是資料庫。對於初學者來講,Linq To Sql可以讓他們迅速進入資料庫應用程序開發領域,節約了培訓成本。
LZ可以上網查一下 lambda表達式 自動屬性 類 集合初始化器等等 這都是linQ的新特性

④ 我想知道 Linq 的特性

linq包含好幾個部分
一個是語言語法部分,如C#新添加的select from orderby等,這個跟C#編譯器有關系,實際上只是翻譯成擴展方法代碼罷了,類似array.Select(o => o.Test).OrderBy(o=>o.Pattern)這樣的。擴展方法實際上是靜態方法,C#編譯器會變成靜態方法調用,就是Enumerable.OrderBy(Enumerable.Select())這樣。

第二個是基本類庫部分,這個在.net 3.5添加的,基本的Linq2Object是在Enumerable類內的若干擴展方法。包括支持Linq2Xml的新的類和擴展方法在System.Xml.Linq下,添加的若干DataSet方法等等。

第三個是比較重要的核心類庫,Linq表達式樹,IQueryable和Provider,這個是實現各種第三方的數據訪問的核心,如Linq2Sql、EntityFramework、包括其他如查詢Google、Amazon、Facebook,支持SharePoint查詢的等等各種各樣的Provider

⑤ 在ASP.NET中關於LINQ的使用問題。

在Linq To Sql正式推出之前,很多人只是把sql語句形成一個string,然後,通過ADO.NET傳給SQL Server,返回結果集.這里的缺陷就是,假如你sql語句寫的有問題,只有到運行時才知道.而且並不是所有的人都懂資料庫的。Linq To SQl 在一切圍繞數據的項目內都可以使用。特別是在項目中缺少sql server方面的專家時,Linq To SQl的強大的功能可以幫我們快速的完成項目。Linq To SQl的推出,是讓大家從煩瑣的技術細節中解脫出來,更加關注項目的邏輯。Linq To Sql的出現,大大降低了資料庫應用程序開發的門楷,它實質是事先為你構架了數據訪問層,勢必將加快資料庫應用程序的開發進度。Linq To Sql解放了眾多程序員,讓他們的把更多的精力放到業務邏輯以及code上,而不是資料庫。對於初學者來講,Linq To Sql可以讓他們迅速進入資料庫應用程序開發領域,節約了培訓成本。 LZ可以上網查一下 lambda表達式 自動屬性 類 集合初始化器等等 這都是linQ的新特性

⑥ 在.net的linq技術中,什麼子句可用於訪問單個數據源中的內部集合

.net framworker 3.5增加的新特性

LINQ(Language Integrated Query)是Visual Studio 2008中的領軍人物。藉助於LINQ技術,我們可以使用一種類似SQL的語法來查詢任何形式的數據。目前為止LINQ所支持的數據源有SQL Server、XML以及內存中的數據集合。開發人員也可以使用其提供的擴展框架添加更多的數據源,例如MySQL、Amazon甚至是Google Desktop。
一般來講,這類查詢語句的一個重要特點就是可以並行化執行。雖然有些情況下並行可能會帶來一些問題,但這種情況非常少見。這樣也就水到渠成地引出了PLINQ這個並行處理的LINQ類庫。
PLINQ原名為Parallel LINQ,支持XML和內存中的數據集合。執行於遠程伺服器上的查詢語句(例如LINQ to SQL)顯然無法實現這個功能。
將LINQ語句轉換為PLINQ語句極為簡單——只需要在查詢語句中From子句所指定的數據源的最後添加.AsParallel()即可。隨後Where、OrderBy和Select子句將自動改為調用這個並行的LINQ版本。
據MSDN Magazine介紹,PLINQ可以以三種方式執行。第一種是管道處理:一個線程用來讀取數據源,而其他的線程則用來處理查詢語句,二者同步進行——雖然這個單一的消費線程可能並不那麼容易與多個生產線程同步。不過若是能夠仔細配置好負載平衡的話,仍然會極大地減少內存佔用。
第二種模式叫做「stop and go」,用於處理結果集需要被一次返回時(例如調用ToList、ToArray或對結果排序)的情況。在這種模式下,將依次完成各個處理過程,並將結果統一返回給消費線程。這個模式在性能上將優於第一種模式,因為它省去了用來保持線程同步所花費的開銷。
最後一種方法叫做「inverted enumeration」。該方法並不需要實現收集到所有的輸出,然後在單一的線程中處理,而是將最終調用的函數通過ForAll擴展傳遞到每個線程中。這是目前為止最快的一種處理模式,不過這需要傳遞到ForAll中的函數是線程安全的,且最好不包含任何lock之類的互斥語句。
若是PLINQ中任意的一個線程拋出異常,那麼所有的其他線程將會被終止。若是拋出了多個異常,那麼這些異常將被組合成一個MultipleFailuresException類型的異常,但每個異常的調用堆棧仍會被保留。

⑦ C#的lINQ怎麼用干什麼用的

1.LINQ:Language Integrated Query 語言集成查詢。
2.LINQ通過對象的方式對資料庫進行描述。
3.LINQ是一種能夠快速對大部分數據源進行訪問和數據整合的一種技術,使用相同的基本查詢表達式模式類查詢和轉換SQL資料庫、ADO.NET數據集、XML文檔和流已經.NET集合中的數據。
4.使用方法:
LINQ to Objects

LINQ to DataSet
LINQ to SQL
LINQ to Entities
LINQ to XML

⑧ 如何使用LINQ鏈接資料庫並操作資料庫

之前在遠標做過用java連接資料庫主要有兩種方式,一是用JDBC-ODBC橋來連接,二是用相關廠商提供的相應驅動程序來連接,首先談談第一種連接。

JDBC-ODBC橋接器是用JdbcOdbc.Class和一個用於訪問ODBC驅動程序的本地庫實現的。對於WINDOWS平台,該本地庫是一個動態連接庫DLL(JDBCODBC.DLL)。

由於JDBC在設計上與ODBC很接近。在內部,這個驅動程序把JDBC的方法映射到ODBC調用上,這樣,JDBC就可以和任何可用的ODBC驅動程序進行交互了。這種橋接器的優點是,它使JDBC目前有能力訪問幾乎所有的資料庫。通行方式如圖所示:

應用程序---JDBC API---JDBC-ODBC---ODBC API---ODBC層---數據源

具體操作方法為:

首先打開控制面板的管理工具,打開數據源(ODBC),在用戶DSN裡面添加數據源(即你要連接的資料庫的名字),在這里假定連接SQL SERVER 2000的GoodsSupply資料庫。名稱填寫你要連接的資料庫的名稱(GoodsSupply),然後逐步設置,如果選用了使用SQL-SERVER密碼認證的話,就要輸入相應的用戶名及密碼連接到資料庫。一路下一步設置完成。

在JAVA裡面編寫程序進行測試,在這里我的程序是讓用戶輸入任意的表名與與列名,把該列的所有數據輸出。源代碼如下:

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.sql.*;

public class ODBCBridge {

public static void main(String[] args) {
String url="jdbc:odbc:GoodsSupply";
Statement sm=null;
String command=null;
ResultSet rs=null;
String tableName=null;
String cName=null;
String result=null;
BufferedReader input=new BufferedReader(new InputStreamReader(System.in));
try {
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); //載入驅動
}catch(ClassNotFoundException e){
System.out.println("Can not load Jdbc-Odbc Bridge Driver");
System.err.print("ClassNotFoundException:");
System.err.println(e.getMessage());
}
Connection con=DriverManager.getConnection(url,"USER","PASSWORD"); //使用SQL-SERVER2000認證
DatabaseMetaData dmd=con.getMetaData(); //DMD為連接的相應情況
System.out.println("連接的資料庫:"+dmd.getURL());
System.out.println("驅動程序:"+dmd.getDriverName());
sm=con.createStatement();
System.out.println("輸入表名");
tableName=input.readLine();
while(true) {
System.out.println("輸入列名(為空時程序結束):");
cName=input.readLine();
if(cName.equalsIgnoreCase(""))
break;
command="select "+cName+" from "+tableName;
rs=sm.executeQuery(command); //執行查詢
if(!rs.next())
System.out.println("表名或列名輸入有誤");
else {
System.out.println("查詢結果為:");
do
{
result=rs.getString(cName);
//資料庫語言設置為中文,不用轉換編碼
//result=new String(result.getBytes("ISO-8859-1"),"GB2312");
System.out.println(result);
}while(rs.next());
}
}
}catch(SQLException ex) {
System.out.println("SQLException:");
while(ex!=null) {
System.out.println("Message:"+ex.getMessage());
ex=ex.getNextException();
}
}catch(Exception e) {
System.out.println("IOException");
}
}
}

⑨ ASP.NET中的Linq怎麼用

21.1.1 准備數據源
既然LINQ可以查詢多種數據源和對象,這些對象可能是數組,可能是數據集,也可能是資料庫,那麼在使用LINQ進行數據查詢時首先需要准備數據源。
1.數組
數組中的數據可以被LINQ查詢語句查詢,這樣就省去了復雜的數組遍歷。數組數據源示例代碼如下所示。
string[] str = { "學習", "學習LINQ", "好好學習", "生活很美好" };
int[] inter = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
數組可以看成是一個集合,雖然數組沒有集合的一些特性,但是從另一個角度上來說可以看成是一個集合。在傳統的開發過程中,如果要篩選其中包含「學習」欄位的某個字元串,則需要遍歷整個數組。
2.SQL Server
在資料庫操作中,同樣可以使用LINQ進行資料庫查詢。LINQ以其優雅的語法和面向對象的思想能夠方便的進行資料庫操作,為了使用LINQ進行SQL Server資料庫查詢,可以創建兩個表,這兩個表的結構如下所示。Student(學生表):
 S_ID:學生ID。
 S_NAME:學生姓名。
 S_CLASS:學生班級。
 C_ID:所在班級的ID。
上述結構描述了一個學生表,可以使用SQL語句創建學生表,示例代碼如下所示。
USE [student]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Student](
[S_ID] [int] IDENTITY(1,1) NOT NULL,
[S_NAME] [nvarchar](50) COLLATE Chinese_PRC_CI_AS NULL,
[S_CLASS] [nvarchar](50) COLLATE Chinese_PRC_CI_AS NULL,
[C_ID] [int] NULL,
CONSTRAINT [PK_Student] PRIMARY KEY CLUSTERED
(
[S_ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF,
ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
為了更加詳細的描述一個學生所有的基本信息,就需要創建另一個表對該學生所在的班級進行描述,班級表結構如下所示。Class(班級表):
 C_ID:班級ID。
 C_GREAD:班級所在的年級。
 C_INFOR:班級專業。
上述代碼描述了一個班級的基本信息,同樣可以使用SQL語句創建班級表,示例代碼如下所示。
USE [student]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Class](
[C_ID] [int] IDENTITY(1,1) NOT NULL,
[C_GREAD] [nvarchar](50) COLLATE Chinese_PRC_CI_AS NULL,
[C_INFOR] [nvarchar](50) COLLATE Chinese_PRC_CI_AS NULL,
CONSTRAINT [PK_Class] PRIMARY KEY CLUSTERED
(
[C_ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF,
ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
上述代碼在Student資料庫中創建了一個班級表,開發人員能夠向資料庫中添加相應的信息以准備數據源。
3.數據集
LINQ能夠通過查詢數據集進行數據的訪問和整合;通過訪問數據集,LINQ能夠返回一個集合變數;通過遍歷集合變數可以進行其中數據的訪問和篩選。在第9章中講到了數據集的概念,開發人員能夠將資料庫中的內容填充到數據集中,也可以自行創建數據集。
數據集是一個存在於內存的對象,該對象能夠模擬資料庫的一些基本功能,可以模擬小型的資料庫系統,開發人員能夠使用數據集對象在內存中創建表,以及模擬表與表之間的關系。在數據集的數據檢索過程中,往往需要大量的if、else等判斷才能檢索相應的數據。
使用LINQ進行數據集中數據的整理和檢索可以減少代碼量並優化檢索操作。數據集可以是開發人員自己創建的數據集也可以是現有資料庫填充的數據集,這里使用上述SQL Server創建的資料庫中的數據進行數據集的填充。
21.1.2 使用LINQ
在傳統對象查詢中,往往需要很多的if、else語句進行數組或對象的遍歷,例如在數組中尋找相應的欄位,實現起來往往比較復雜,而使用LINQ就簡化了對象的查詢。由於前面已經准備好了數據源,那麼就能夠分別使用LINQ語句進行數據源查詢。
1.數組
在前面的章節中,已經創建了一個數組作為數據源,數組示例代碼如下所示。
int[] inter = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
上述代碼是一個數組數據源,如果開發人員需要從其中的元素中搜索大於5的數字,傳統的方法應該遍歷整個數組並判斷該數字是否大於5,如果大於5則輸出,否則不輸出,示例代碼如下所示。
using System;
using System.Collections.Generic;
using System.Linq; //使用必要的命名空間
using System.Text;
namespace _21_1
{
class Program
{
static void Main(string[] args)
{
string[] str = { "學習", "學習LINQ", "好好學習", "生活很美好" }; //定義數組
int[] inter = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
for (int i = 0; i < inter.Length; i++) //遍歷數組
{
if (inter[i] > 5) //判斷數組元素的值是否大於5
{
Console.WriteLine(inter[i].ToString()); //輸出對象
}
}
Console.ReadKey();
}
}
}
上述代碼非常簡單,將數組從頭開始遍歷,遍歷中將數組中的的值與5相比較,如果大於5就會輸出該值,如果小於5就不會輸出該值。雖然上述代碼實現了功能的要求,但是這樣編寫的代碼繁冗復雜,也不具有擴展性。如果使用LINQ查詢語句進行查詢就非常簡單,示例代碼如下所示。
class Program
{
static void Main(string[] args)
{
string[] str = { "學習", "學習LINQ", "好好學習", "生活很美好" }; //定義數組
int[] inter = { 1, 2, 3, 4, 5, 6, 7, 8, 9 }; //定義數組
var st = from s in inter where s > 5 select s; //執行LINQ查詢語句
foreach (var t in st) //遍歷集合元素
{
Console.WriteLine(t.ToString()); //輸出數組
}
Console.ReadKey();
}
}
使用LINQ進行查詢之後會返回一個IEnumerable的集合。在上一章講過,IEnumerable是.NET框架中最基本的集合訪問器,可以使用foreach語句遍歷集合元素。使用LINQ查詢數組更加容易被閱讀,LINQ查詢語句的結構和SQL語法十分類似,LINQ不僅能夠查詢數組,還可以通過.NET提供的編程語言進行篩選。例如str數組變數,如果要查詢其中包含「學習」的字元串,對於傳統的編程方法是非常冗餘和繁瑣的。由於LINQ是.NET編程語言中的一部分,開發人員就能通過編程語言進行篩選,LINQ查詢語句示例代碼如下所示。
var st = from s in str where s.Contains("學習") select s;
2.使用SQL Server
在傳統的資料庫開發中,如果需要篩選某個資料庫中的數據,可以通過SQL語句進行篩選。在ADO.NET中,首先需要從資料庫中查詢數據,查詢後就必須將數據填充到數據集中,然後在數據集中進行數據遍歷,示例代碼如下所示。
try
{
SqlConnection
con = new SqlConnection("server='(local)';database='student';uid='sa';pwd='sa'"); //創建連接
con.Open(); //打開連接
string strsql = "select * from student,class where student.c_id=class.c_id"; //SQL語句
SqlDataAdapter da = new SqlDataAdapter(strsql, con); //創建適配器
DataSet ds = new DataSet(); //創建數據集
int j = da.Fill(ds, "mytable"); //填充數據集
for (int i = 0; i < j; i++) //遍歷集合
{
Console.WriteLine(ds.Tables["mytable"].Rows[i]["S_NAME"].ToString()); //輸出對象
}
}
catch
{
Console.WriteLine("資料庫連接錯誤"); //拋出異常
}
上述代碼進行資料庫的訪問和查詢。在上述代碼中,首先需要創建一個連接對象進行資料庫連接,然後再打開連接,打開連接之後就要編寫SELECT語句進行資料庫查詢並填充到DataSet數據集中,並在DataSet數據集中遍歷相應的表和列進行數據篩選。如果要查詢C_ID為1的學生的所有姓名,有三個辦法,這三個辦法分別是:
 修改SQL語句。
 在循環內進行判斷。
 使用LINQ進行查詢。
修改SQL語句是最方便的方法,直接在SELECT語句中添加查詢條件WHERE C-ID=1就能夠實現,但是這個方法擴展性非常的低,如果有其他需求則就需要修改SQL語句,也有可能造成其餘代碼填充數據集後數據集內容不同步。
在循環內進行判斷也是一種方法,但是這個方法當循環增加時會造成額外的性能消耗,並且當需要擴展時,還需要修改循環代碼。最方便的就是使用LINQ進行查詢,在Visual Studio 2008中提供了LINQ to SQL類文件用於將現有的數據抽象成對象,這樣就符合了面向對象的原則,同時也能夠減少代碼,提升擴展性。創建一個LINQ to SQL類文件,直接將服務資源管理器中的相應表拖放到LINQ to SQL類文件可視化窗口中即可,如圖21-1所示。

圖21-1 創建LINQ to SQL文件
創建了LINQ to SQL類文件後,就可以直接使用LINQ to SQL類文件提供的類進行查詢,示例代碼如下所示。
linqtosqlDataContext lq = new linqtosqlDataContext();
var mylq = from l in lq.Student from cl in lq.Class where l.C_ID==cl.C_ID select l; //執行查詢
foreach (var result in mylq) //遍歷集合
{
Console.WriteLine(result.S_NAME.ToString()); //輸出對象
}
上述代碼只用了很短的代碼就能夠實現資料庫中數據的查詢和遍歷,並且從可讀性上來說也很容易理解,因為LINQ查詢語句的語法基本與SQL語法相同,只要有一定的SQL語句基礎就能夠非常容易的編寫LINQ查詢語句。
3.數據集
LINQ同樣對數據集支持查詢和篩選操作。其實數據集也是集合的表現形式,數據集除了能夠填充資料庫中的內容以外,開發人員還能夠通過對數據集的操作向數據集中添加數據和修改數據。前面的章節中已經講到,數據集可以看作是內存中的資料庫。數據集能夠模擬基本的資料庫,包括表、關系等。這里就將SQL Server中的數據填充到數據集即可,示例代碼如下所示。
try
{
SqlConnection
con = new SqlConnection("server='(local)';database='student';uid='sa';pwd='sa'"); //創建連接
con.Open(); //打開連接
string strsql = "select * from student,class where student.c_id=class.c_id"; //執行SQL
SqlDataAdapter da = new SqlDataAdapter(strsql, con); //創建適配器
DataSet ds = new DataSet(); //創建數據集
da.Fill(ds, "mytable"); //填充數據集
DataTable tables = ds.Tables["mytable"]; //創建表
var dslq = from d in tables.AsEnumerable() select d; //執行LINQ語句
foreach (var res in dslq)
{
Console.WriteLine(res.Field<string>("S_NAME").ToString()); //輸出對象
}
}
catch
{
Console.WriteLine("資料庫連接錯誤");
}
上述代碼使用LINQ針對數據集中的數據進行篩選和整理,同樣能夠以一種面向對象的思想進行數據集中數據的篩選。在使用LINQ進行數據集操作時,LINQ不能直接從數據集對象中查詢,因為數據集對象不支持LINQ查詢,所以需要使用AsEnumerable方法返回一個泛型的對象以支持LINQ的查詢操作,示例代碼如下所示。
var dslq = from d in tables.AsEnumerable() select d; //使用AsEnumerable
上述代碼使用AsEnumerable方法就可以讓數據集中的表對象能夠支持LINQ查詢。
21.1.3 執行LINQ查詢
從上一節可以看出LINQ在編程過程中極大的方便了開發人員對於業務邏輯的處理代碼的編寫,在傳統的編程方法中復雜、冗餘、難以實現的方法在LINQ中都能很好的解決。LINQ不僅能夠像SQL語句一樣編寫查詢表達式,LINQ最大的優點也包括LINQ作為編程語言的一部分,可以使用編程語言提供的特性進行LINQ條件語句的編寫,這就彌補了SQL語句中的一些不足。在前面的章節中將一些復雜的查詢和判斷的代碼簡化成LINQ應用後,就能夠執行應用程序判斷LINQ是否查詢和篩選出了所需要的值。
1.數組
在數組數據源中,開發人員希望能夠篩選出大於5的元素。開發人員將傳統的代碼修改成LINQ代碼並通過LINQ查詢語句進行篩選,示例代碼如下所示。
var st = from s in inter where s > 5 select s; //執行LINQ查詢
上述代碼將查詢在inter數組中的所有元素並返回其中元素的值大於5的元素的集合,運行後如圖21-2所示。

圖21-2 遍歷數組
LINQ執行了條件語句並返回了元素的值大於5的元素。LINQ語句能夠方便的擴展,當有不同的需求時,可以修改條件語句進行邏輯判斷,例如可以篩選一個平方數為偶數的數組元素,直接修改條件即可,LINQ查詢語句如下所示。
var st = from s in inter where (s*s)%2==0 select s; //執行LINQ查詢
上述代碼通過條件(s*s)%2==0將數組元素進行篩選,選擇平方數為偶數的數組元素的集合,運行後如圖21-3所示。

圖21-3 更改篩選條件
2.使用SQL Server
在LINQ to SQL類文件中,LINQ to SQL類文件已經將資料庫的模型封裝成一個對象,開發人員能夠通過面向對象的思想訪問和整合資料庫。LINQ to SQL也對SQL做了補充,使用LINQ to SQL類文件能夠執行更強大的篩選,LINQ查詢語句代碼如下所示。
var mylq = from l in lq.Student from cl in lq.Class where l.C_ID==cl.C_ID select l; //執行LINQ查詢
上述代碼從Student表和Class表中篩選了C_ID相等的學生信息,這很容易在SQL語句中實現。LINQ作為編程語言的一部分,可以使用更多的編程方法實現不同的篩選需求,例如篩選名稱中包含「郭」字的學生的名稱在傳統的SQL語句中就很難通過一條語句實現,而在LINQ中就能夠實現,示例代碼如下所示。
var mylq = from l in lq.Student from cl in lq.Class where l.C_ID==cl.C_ID where
l.S_NAME.Contains("郭") select l; //執行LINQ條件查詢
上述代碼使用了Contains方法判斷一個字元串中是否包含某個字元或字元串,這樣不僅方便閱讀,也簡化了查詢操作,運行後如圖21-4和圖21-5所示。

圖21-4 簡單查詢 圖21-5 條件查詢
LINQ返回了符合條件的元素的集合,並實現了篩選操作。LINQ不僅作為編程語言的一部分,簡化了開發人員的開發操作,從另一方面講,LINQ也補充了在SQL中難以通過幾條語句實現的功能的實現。從上面的LINQ查詢代碼可以看出,就算是不同的對象、不同的數據源,其LINQ基本的查詢語法都非常相似,並且LINQ還能夠支持編程語言具有的特性從而彌補SQL語句的不足。在數據集的查詢中,其查詢語句也可以直接使用而無需大面積修改代碼,這樣代碼就具有了更高的維護性和可讀性。

熱點內容
大華錄像機哪裡有安卓設備 發布:2025-05-15 14:25:06 瀏覽:808
錄制腳本方案 發布:2025-05-15 14:25:04 瀏覽:165
奇石腳本業 發布:2025-05-15 14:23:44 瀏覽:680
android中的socket 發布:2025-05-15 14:22:15 瀏覽:408
apph5源碼 發布:2025-05-15 14:19:51 瀏覽:666
2d游戲按鍵精靈腳本教程 發布:2025-05-15 14:10:15 瀏覽:279
伺服器上的郵件如何銷毀 發布:2025-05-15 14:02:49 瀏覽:138
飢荒安卓版如何解除手柄模式 發布:2025-05-15 14:02:05 瀏覽:112
演算法強化班 發布:2025-05-15 14:02:04 瀏覽:346
c語言編譯後圖片 發布:2025-05-15 13:51:57 瀏覽:793