當前位置:首頁 » 編程語言 » linqtosql多條件查詢
擴展閱讀
檢測硬碟物理壞道 2022-06-27 20:35:29
曙光英雄的緩存 2022-06-27 20:33:50
火影和吃雞哪個更看配置 2022-06-27 20:32:49

linqtosql多條件查詢

發布時間: 2022-06-23 13:29:34

❶ 如何將linq to sql語句得到的結果(多條記錄)轉換為dataset的對象給個簡單的例子

可以對現有的IQueryable 介面進行擴展 ,之後就可以使用這樣得調用:DataContext db = new DataContext (); //具體請使用你自己的 DataContext 實現的對象。DataTable dt=new DataTable();var query = from u in db.Users where u.RoleID ==3 select u; //得到 IQueryable 對象 //這樣調用dt= query.ToDataTable(db); ...可以這樣實現這個擴展://注意這里寫成擴展方法的形式,也可以單獨調用 /// <summary>
/// 對 System.Data.Linq 的擴展
/// 從給定的Linq To SQL 查詢獲取 DataTable 對象
/// </summary>
/// <param name="source"></param>
/// <param name="db"></param>
/// <returns></returns>
public static DataTable ToDataTable(this IQueryable source, DataContext db)
{
//將 LinqToSQL查詢傳遞給 GetCommand()以獲取DbCommand對象
DbCommand cmd = db.GetCommand(source);
//打開資料庫鏈接,這里可以進一步擴展,比如傳遞進來自己定義的繼承自 DbConnection 的對象
if(db.Connection.State== ConnectionState.Closed)
db.Connection.Open();
//聲明 DataTable 對象
DataTable dt = new DataTable();
//調用DataTable 對象的 Load方法 ,從 DbDataReader 對象載入數據。
dt.Load(cmd.ExecuteReader());
//關閉DbConnection 鏈接
db.Connection.Close(); return dt;
}
}//這里為了簡單 返回的是DataTable對象,如果你有多個結果集的查詢,可以自己擴展成DataSet 實現。

❷ Silverlight如何按條件查詢ACCESS資料庫並顯示出來

sl訪問資料庫都是用wcf服務 非同步來進行的,可以使用見到那的linqtosql 來訪問簡單些 或直接用資料庫實例

❸ LINQ to SQL 和一般的查詢語句怎麼什麼區別

linq是面向對象的sql。也就是說,sql是向關系型資料庫的查詢,而linq實際上是對內存里的數據的查詢。
雖然linq原來是對象查詢,但經過ms的努力,可以通過表達式分析與實體到關系的映射(linq
to
sql),把linq轉換為sql語句或是對xml的查詢(linq
to
xml)。
因此,這種技術就成了對象到資料庫記錄的一個方便的映射、轉化與操作的工具,你再也不必去去根據不同的情況用字元串拼接的辦法生成sql,而是專心於對象模型的處理即可,你對於對象的修改最終都會被轉換為對應的update,
insert,
delete等sql語句,在你submit時全部提交到資料庫中。
綜爾言之,linq
to
sql是一個資料庫到對象結構的一個中間層,
他把對關系數據的管理轉變為對象的操作,屏蔽了麻煩的sql,而且,還可以得到vs強大的智能感知功能的幫助。

❹ linqtosql動態生成的表加不加s

在自動生成的DataContext中有Students屬性,它的類型是Table<Student>對應資料庫中的Student表,我們的查詢對象就是它了。
先來一個最簡單的Query

1
2

var query = from s in db.Students
select s;

上面的語句可以查詢Student表的所有記錄,但是它卻不同於 SQL語句

1
2
3
4
5
6
7
8
9
10

SELECT [StudentID]
,[Name]
,[Hometown]
,[Gender]
,[Birthday]
,[ClassID]
,[WeightInKg]
,[HeightInCm]
,[Desc]
FROM [Test].[dbo].[Student]

query的數據類型是IQueryable<Student> ,其字面意思是Student的可查詢實例,通過這個query我們可以做很多種查詢,當然包括上面的SQL語句。具體這個IQueryable實例會做那種查詢和我們後續代碼中如何使用它有關系,下面是幾個例子:
1. 使用query返回Student表中的記錄數,代碼如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14

using (var writer = new StreamWriter(@"E:\projects.2010\Test\LINQ2SQL_2\linq.sql", false, Encoding.UTF8))
{
//最簡單的select
using (DbAppDataContext db = new DbAppDataContext())
{
//設置Log列印到的地方
db.Log = writer;
var query = from s in db.Students
select s;

//返回Student表中的記錄數
var cn = query.Count();
}
}

上面query.Count()執行的SQL如下:

1
2
3

SELECT COUNT(*) AS [value]
FROM [dbo].[Student] AS [t0]
-- Context: SqlProvider(Sql2005) Model: AttributedMetaModel Build: 4.0.30319.

生成的sql語句很規范,取得Student表中的記錄數
2.給這個IQuerable添加條件身高大於130cm,然後執行查詢

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

using (var writer = new StreamWriter(@"E:\projects.2010\Test\LINQ2SQL_2\linq.sql", false, Encoding.UTF8))
{
//最簡單的select
using (DbAppDataContext db = new DbAppDataContext())
{
//設置Log屬性,將生成的sql語句保存到文件中
db.Log = writer;
var query = from s in db.Students
select s;

//列印身高大於132cm的Student
foreach (var item in query.Where(s => s.HeightInCm > 132))
{
Console.WriteLine("{0}的身高是{1}cm", item.Name, item.HeightInCm);
}
}
}

其SQL語句如下:可以看到linq to sql對sql注入攻擊有天然的免疫作用,它自動生成的sql語句是參數化的

1
2
3
4
5

SELECT [t0].[StudentID], [t0].[Name], [t0].[Hometown], [t0].[Gender], [t0].[Birthday], [t0].[ClassID], [t0].[WeightInKg], [t0].[HeightInCm], [t0].[Desc] AS [Desc]
FROM [dbo].[Student] AS [t0]
WHERE [t0].[HeightInCm] > @p0
-- @p0: Input Float (Size = -1; Prec = 0; Scale = 0) [132]
-- Context: SqlProvider(Sql2005) Model: AttributedMetaModel Build: 4.0.30319.1

我們可以對IQueryable附加條件限制,其實添加這個Where後的query和下面的語句是等價的。

1
2
3

var query = from s in db.Students
where s.HeightInCm > 132
select s;

那麼如果我們的query實例中已經有條件後再加限制會是什麼樣子的呢,請看3
3. 在query定義是有身高、體重兩個查詢條件,在使用query時我們又附加了一個Hometown在「多家營」的條件,看下代碼和真實執行的sql情況

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

using (var writer = new StreamWriter(@"E:\projects.2010\Test\LINQ2SQL_2\linq.sql", false, Encoding.UTF8))
{
//最簡單的select
using (DbAppDataContext db = new DbAppDataContext())
{
//設置Log屬性,將生成的sql語句保存到文件中
db.Log = writer;

//查詢身高大於132並且體重大於30的Student
var query = from s in db.Students
where s.HeightInCm > 132 && s.WeightInKg > 30
select s;

//在query中用Where附加家鄉在多家營的記錄
foreach (var item in query.Where(s => s.Hometown == "多家營"))
{
Console.WriteLine("{0}的身高是{1}cm", item.Name, item.HeightInCm);
}
}
}

SQL:

1
2
3
4
5
6
7

SELECT [t0].[StudentID], [t0].[Name], [t0].[Hometown], [t0].[Gender], [t0].[Birthday], [t0].[ClassID], [t0].[WeightInKg], [t0].[HeightInCm], [t0].[Desc] AS [Desc]
FROM [dbo].[Student] AS [t0]
WHERE <span style="background-color: #ffff00;">([t0].[Hometown] = @p0)</span> AND ([t0].[HeightInCm] > @p1) AND ([t0].[WeightInKg] > @p2)
-- @p0: Input NVarChar (Size = 4000; Prec = 0; Scale = 0) [多家營]
-- @p1: Input Float (Size = -1; Prec = 0; Scale = 0) [132]
-- @p2: Input Float (Size = -1; Prec = 0; Scale = 0) [30]
-- Context: SqlProvider(Sql2005) Model: AttributedMetaModel Build: 4.0.30319.1

可以看出後附件的條件並非如我們常規理解附件到條件的最後,而是放到了最前面,這一點有可能對效率造成影響,是需要我們注意的。
通過上面三點可以看出來linq to sql中的IQueryable並非等同於某一個sql語句,其具體要執行的sql語句和具體情況有關系。
在query定義時可以很方便的添加排序規則,可以是一個或者n個,如下語句:

1
2
3
4
5

//查詢身高大於132並且體重大於30的Student,並按照StudentID升序排序,按照classID降序排序
var query = from s in db.Students
where s.HeightInCm > 132 && s.WeightInKg > 30
orderby s.StudentID ascending, s.ClassID descending
select s;

❺ 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語句的不足。在數據集的查詢中,其查詢語句也可以直接使用而無需大面積修改代碼,這樣代碼就具有了更高的維護性和可讀性。

❻ LINQ和LINQ to SQL有區別嗎之間關系是什麼

LINQ是集成化查詢語言,可以用於對集合進行查詢。
linq
to
sql是linq的擴展框架,支持linq針對SQL資料庫進行查詢(將查詢的條件轉化為SQL語句)

❼ Linq to sql 動態添加條件多表查詢數據

sql = "select * from t where 1=1";

//姓名不為空就把姓名加入where條件
if (!string.IsNullOrEmpty(this.txtName.Text.Trim()))
{
sql = sql + string.Format(" and name like '%{0}%'", this.txtName.Text.Trim());
}

//身份證號不為空就把身份證號加入where條件
if (!string.IsNullOrEmpty(this.txtID.Text.Trim()))
{
sql = sql + string.Format(" and id like '%{0}%'", this.txtID.Text.Trim());
}

❽ Linq和LinqtoSql有什麼區別一般做項目用哪種

Linq是微軟在.net3.0推出的一種新的數據訪問和處理的方式,來解決過去處理集合對象數據所遇到的種種困難。其中在C#3.0和VB9中分別引入了和SQL相似的Linq語法,使得現在操作各種數據對象變得非常容易而且可讀性更好。

Linq To Sql是微軟默認提供的LinqProvider的一種,其他的還有LinqToDataSet LinqToXml LinqToEntity等。

平時開發項目可以大量的使用linq,他會讓你在處理大量集合數據的時候提高效率。而Linq2Sql算是一個ORM框架,可以用來減輕數據訪問的負擔,如果你知道Hibernate之類的ORM框架的話,就很容易理解他了

❾ 怎麼將Linqtosql中查詢的內容進行取出

大概是類似如下

tb_Employeeem=result.ToList()[下標]

❿ LINQ TO SQL的多表聯查

var ns=(from n in news join c in comment on n.id equals c.nid).Take(5);