當前位置:首頁 » 編程語言 » linqtosql創建表
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

linqtosql創建表

發布時間: 2023-05-17 21:33:04

A. 在WPF中插入了一個ListView表格,在sql中建了一個表,如何實現綁定

您可以使用ado.net或者linq
to
sql等相關技術,從資料庫中讀取查詢內容後填充到dataset中,直接將所讀取的dataset綁定到你的listview就行了.

B. 第一次用LINQ 怎麼 Procts 實例化不出來啊 需要用那個命名空間啊

linq只是在.net語言基礎上衍生出來的查詢範式,在linq
to
sql設計上提供不了對所有類型和sql控制符的映射。
還是老老實實用數據集實現數據訪問吧,linq只用來輔助查詢好了。
SQL建表應該很簡單了吧,建個
tb1的表,扔個f1的nvarchar進去。
在伺服器資源管理器里注冊相應的SQL
伺服器。
然後項目里新建個Linq
to
SQL類,名稱DataClasses1,打開服敏皮務器資源管理器的SQL伺服器,把tb1扔進Linq
to
SQL類設計器去。會自動生成相應的實體,直接保存就行了。
然後插入數據就用
using
(DataClasses1DataContext
ddc
=
new
DataClasses1DataContext())
{
tb1
c=
new
tb1();
tb.f1=
"a
my
string";
ddc.tb1.InsertOnSubmit(tb);
ddc.SubmitChanges()
}
想用Linq的語法就用
var
tb=
new
tb1;
來初始化tb1類段拿銷
唔,好吧,我收回這一句「Linq
to
sql
已經是被握游微軟廢棄的,原因是兼容性很差。」
改為「Linq
to
Sql
的不少功能在.net
4.0被LINQ
to
Entities合並,雖然Linq
to
Sql
類在2010中依然可用,但MS的主攻方向已經放在了實體數據模型上」

C. C#資料庫入門經典的C# 2008資料庫入門經典(第4版)

作者:阿格沃爾 , 哈德萊斯頓
翻譯:沈潔 , 楊華
出版社: 清華大學出版社; 第4版 (2009年3月1日)
平裝: 373頁
正文語種: 漢語
開本: 16
ISBN: 7302196281, 9787302196280
條形碼: 9787302196280
產品尺寸及重量: 25.8 x 18.2 x 1.8 cm ; 662 g 《C# 2008資料庫入門經典(第4版) 》著重介紹了使用C# 2008作為開發工具,與最新發布的Visual Studio 2008及.NET Framework 3.5一起訪問資料庫。《C# 2008資料庫入門經典(第4版)》介紹了使用SQL Server 2005進行資料庫編程的所有知識,將數據「拉」到使用C# 2008開發的應用程序中。在學習《C# 2008資料庫入門經典(第4版)》的過程中,通過創建「試一試」部分的示例應用程序,可以實踐所學的知識。它將幫助您將所學內容應用於實際應用程序中。「示例說明」解釋了示例應用程序的每個代
碼語句以幫助您進行理解。作者希望您不僅能夠掌握C# 2008的知識,還能夠學到SQLServer 2005的知識。《C# 2008資料庫入門經典(第4版)》介紹了相當多的資料庫概念,包括基本知識、SQL Server 2005的T-SQL新功能。《C# 2008資料庫入門經典(第4版)》將幫助您逐步提升代碼編寫能力,所以我們將從簡單的主題講起,逐步過渡到復雜主題。首先介紹基本應用程序開發,然後是LINQ和ADO.NET 3.5的概念,以及使用它們構建應用程序。
作者相信《C# 2008資料庫入門經典(第4版)》能有助於您提高資料庫應用開發的能力。 作者:(美國)阿格沃爾 (美國)哈德萊斯頓 譯者:沈潔 楊華
idya Vrat Agarwal,是一位純Microsoft NET主義者,擁有MCT、MCPD、MCTS、MCSD.NET、MCAD.NET和MCSD等認證,他在萊博智科技(Lionbridge Technologies公司工作。同時,又是印度計算機科學院的終身會員。他最初從事Microsoft.NET測試版本的工作,之後涉足軟體開發、技術推廣、技術顧問、公司培訓的工作和為不同客戶開發基於Microsoft.NET的T3項目。可以在www. Programmers Heaven Com上閱讀到他的文章。他還在www. U Certify com上對.NET Preparation Kits作了評論。 第1章 開發工具
1.1 獲取VisualStudio2008
1.2 安裝
1.3 安裝Northwind樣本資料庫
1.3.1 安裝Northwind創建腳本
1.3.2 創建Northwind樣本資料庫
1.4 安裝AdventureWorks樣本資料庫
1.4.1 安裝AdventureWorks創建腳本
1.4.2 創建AdventureWorks樣本資料庫
1.5 小結
第2章 使用開發工具
2.1 不同版本Microsoft.NETFramework與代碼庫模型
2.2 使用MicrosoftVisualStudio2008
2.3 使用
2.4 小結
第3章 理解關系資料庫
3.1 資料庫的概念
3.2 電子數據表和資料庫的選擇
3.3 使用資料庫的原因
3.4 使用關系型資料庫管理系統的優勢
3.5 桌面RDBMS和伺服器RDBMS的比較
3.5.1 桌面資料庫
3.5.2 伺服器資料庫
3.6 資料庫的生命周期
3.7 映射基數
3.8 鍵的理解
3.8.1 主鍵
3.8.2 外鍵
3.9 理解數據完整性
3.9.1 實體完整性
3.9.2 引用完整性
3.1 0規范化概念
3.1 1規范化的缺陷
3.1 2小結
第4章 編寫資料庫查詢
4.1 比較QBE與SQL
4.2 查詢
4.3 通用表表達式
4.4 GROUPBY子句
4.5 PIVOT運算符
4.6 ROW_NUMBER()函數
4.7 PARTITIONBY子句
4.8 模式匹配
4.9 合計函數
4.1 0DATETIME日期函數
4.1 1連接
4.1 1.1 內連接
4.1 1.2 外連接
4.1 1.3 其他連接
4.1 2小結
第5章 操縱資料庫數據
5.1 檢索數據
5.1.1 使用WHERE子句
5.1.2 數據排序
5.2 使用SELECTINTO語句
5.3 插入數據
5.4 更新數據
5.5 刪除數據
5.6 小結
第6章 使用存儲過程
6.1 創建存儲過程
6.2 修改存儲過程
6.3 顯示存儲過程的定義
6.4 重命名存儲過程
6.5 在C#中使用存儲過程
6.6 刪除存儲過程
6.7 小結
第7章 使用XML
7.1 XML的定義
7.2 選擇XML的原因
7.3 將數據存儲為XML格式的好處
7.4 理解XML文檔
7.5 理解XML聲明
7.6 將關系型數據轉換為XML
7.6.1 使用FORXMLRAW模式
7.6.2 使用FORXMLAUTO
7.7 使用xml數據類型
7.8 小結
第8章 了解事務
8.1 事務的概念
8.2 何時使用事務
8.3 理解ACID屬性
8.4 事務設計
8.5 事務狀態
8.6 指定事務界限
8.7 在事務中允許使用的T-SQL語句
8.8 SQLServer2005中的本地事務
8.9 SQLServer2005中的分布式事務
8.1 0編寫高效事務的准則
8.1 1如何編寫事務
8.1 1.1 在T-SQL中編寫事務
8.1 1.2 在ADO.NET中編寫事務
8.1 2小結
第9章 ADO.NET簡介
9.1 了解ADO.NET
9.2 開發ADO.NET的原因
9.3 從ADO到ADO.NET
9.3.1 ADO.NET並非ADO的新版本
9.3.2 ADO.NET和.NET基類庫
9.4 理解ADO.NET體系結構
9.5 使用SQLServer數據提供程序
9.6 使用OLEDB數據提供程序
9.7 使用ODBC數據提供程序
9.8 數據提供程序是API
9.9 小結
第10章 創建連接
10.1 數據提供程序連接類概述
10.2 使用SqlConnection連接到SQLServerExpress
10.2.1 調試到SQLServer的連接
10.2.2 SqlConnection中的安全與口令
10.2.3 使用SQLServer安全機制
10.2.4 SqlConnection中的連接字元串參數
10.2.5 連接池
10.3 連接對象的進階用法
10.3.1 在連接構造函數中使用連接字元串
10.3.2 顯示連接信息
10.4 用OleDbConnection連接到SSE
10.5 小結
第11章 執行命令
11.1 創建命令
11.1.1 關聯命令與連接
11.1.2 設置Command對象的文本
11.2 執行命令
11.3 執行具有多個結果的命令
11.4 執行語句
11.5 命令參數
11.6 小結
第12章 數據讀取器
12.1 數據讀取器概述
12.1.1 使用序數索引器
12.1.2 使用列名索引器
12.1.3 使用類型訪問器方法
12.2 獲取數據的信息
12.3 獲取表的數據
12.4 使用數據讀取器處理多個結果集
12.5 小結
第13章 使用數據集和數據適配器
13.1 理解對象模型
13.1.1 數據集與數據讀取器
13.1.2 數據集概述
13.1.3 數據適配器概述
13.1.4 DataTable、DataColumn和DataRow對象概述
13.2 使用數據集和數據適配器
13.2.1 數據集的篩選和排序
13.2.2 比較FilterSort和PopDataSet
13.2.3 使用數據視圖
13.2.4 修改數據集中的數據
13.3 將變化保存到數據源中
13.4 並發
13.5 使用數據集和XML
13.6 在沒有數據集的情況下使用數據表
13.7 理解有類型和無類型的數據集
13.8 小結
第14章 構建WindowsForms應用程序
14.1 理解WindowsForms
14.2 用戶界面設計原則
14.3 用戶界面設計的最佳實踐
14.4 利用WindowsForms
14.5 理解設計視圖和代碼視圖
14.6 屬性窗口中的排序屬性
14.6.1 分類視圖
14.6.2 按字母順序排列的視圖
14.7 設置解決方案、項目和WindowsForms屬性
14.8 利用控制項
14.9 設置Dock和Anchor屬性
14.9.1 Dock屬性
14.9.2 Anchor屬性
14.1 0為項目添加新窗體
14.1 1實現MDI窗體
14.1 2小結
第15章 構建ASP.NET應用程序
15.1 理解Web功能
15.1.1 Web伺服器
15.1.2 Web瀏覽器和HTTP
15.2 ASP.NET和Web頁面概述
15.3 理解VisualStudio2008
Web站點類型
15.3.1 文件系統Web站點
15.3.2 FTPWeb站點
15.3.3 HTTPWeb站點
15.4 ASP.NETWeb站點布局
15.4.1 Web頁面
15.4.2 應用程序文件夾
15.4.3 Web.config文件
15.5 使用Master頁面
15.6 小結
第16章 處理異常
16.1 處理ADO.NET異常
16.2 處理資料庫異常
16.3 小結
第17章 處理事件
17.1 理解事件
17.2 事件的屬性
17.3 設計事件
17.4 控制項引發的通用事件
17.5 事件生成器和使用者
17.6 小結1
第18章 使用文本和二進制數據
18.1 理解SQLServer文本和二進制數據類型
18.2 在資料庫中存儲圖像
18.3 從資料庫中檢索圖像
18.4 處理文本數據
18.5 小結
第19章 使用LINQ
19.1 LINQ概述
19.2 LINQ的體系結構
19.3 LINQ的項目結構
19.4 使用LINQtoObjects
19.5 使用LINQtoSQL
19.6 使用LINQtoXML
19.7 小結
第20章 使用ADO.NET3.5
20.1 理解ADO.NET3.5 EntityFramework
20.2 理解實體數據模型
20.3 利用實體數據模型
20.4 小結 由於大多數實際應用程序都要與存儲在關系資料庫中的數據進行交互,因此每個C#程序員需要知道如何訪問數據。本書主要介紹了如何使用C#2008與SQL Server 2005交互。還介紹了.NET Framework 3.5最令人激動的功能LINQ和ADO.NET 3.5。相比於純資料庫概念的書來說,本書闡明資料庫概念的章節將能更好地幫助您理解。本書還涉及了SQL Server 2005中的很多T-SQL新功能。
本書採用的編寫方式是編程新手容易理解的,而編程高手也能從本書受益。如果您想要使用Visual Studio 2008創建資料庫應用程序,那麼本書就非常適合您。本書不但介紹了應用程序開發人員可能使用的所有概念,還講解了在示常式序中使用的每一行代碼。
本書採用的組織方式是先幫助您打下牢固的基礎,然後進一步學習高級技能。
本書讀者對象
如果您是一位喜歡使用C#語言訪問資料庫的應用程序開發人員,那本書非常適合您,因為它介紹了使用C#2008進行SQL Server 2005編程。
本書不要求讀者事先了解C#2.0、SQL Server 2000和資料庫的概念。本書已經包含了其他書籍要求讀者學前需具備的所有基礎知識。
本書是任何想使用C#2008與資料庫進行交互的應用程序開發人員所應必備的。如果您就是其中一員,那本書將是您不可或缺的。本書內容簡介
本書包含了Visual Studio 2008、SQL Server 2005、C#2008、LINQ和ADO.NET 3.5等內容。所有這些主題都是以章的形式出現,並使用了不同的概念和代碼示例作了解釋。本書中的應用程序都是模仿了現實生活中的應用程序,因此通過對本書的學習,您可以在工作中利用這些概念。

D. 用 linq to sql 多表查詢 可以綁定到DataGridView上面嗎(不要新建實體)

這個不可以,linq to sql查詢出來的結果集類型為IQueryable<T>,而這種結果集的類型不是DataGridView的類型,DataGridView需要的數據源類型為DataTable,View等類型

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

F. 用LINQtoSQL創建Web應用系統(一)

在新的 Net Framework 平台上 Microsoft發布了LINQ(C# VB Net ) 集成語言查詢(Language Integrated Query) 也就是通過編程語言來查詢數據

*資料庫 (LINQ to SQL)

*DataSet 數據集(LINQ to Dataset)

*XML文檔 (LINQ to XML)

*實體對象 (LINK to Entities)

本文將演示如何在ASP NET 平台上 使用LINQ to SQL構建多層的Web應用程序 在當前的編程領域中 創建N Tier應用程序成為一般的要求 且 NET Framework 提供了靈活的支持 一般而言 N Tier應用程序畝鬧好有如下幾個層 表示層 業務邏輯層 數據訪問層 資料庫層 每一層均完成特定的任務 本篇文章中介紹的架構和經典的N Tier相似 不過資料庫層替換新的DataLinq 層 使用LINQ to SQL 完成數據操作

圖 基於LINQ to SQL的彎告N Tier架構

架構思考

如果你有大型ASP NET項目的經歷 你可能會注意到更多的時間花在寫組件代碼 而不是Web頁面代碼 有時 組件的設計和管理成為一個費時的過程 你可能正迅鉛遇到架構方面的問題 尋找最好的方式來設計Web應用程序

我寫這篇文章的想法是介紹一個好的設計模式 並不是得到一個結論或者聲明這是一個最好的N Tier應用程序的設計模式 因為對於架構設計 每一個開發人員總是有自己的觀點 所以任何合適的架構闡述都是有爭議的 然而 如圖 所示 分離不同的代碼到不同的層總是一個好的實踐 按這樣組織代碼 可以更方便地維護和擴展應用程序

在圖 中 你可以看到業務組件分割到不同的層 組織代碼最好的方法是為每一個業務組件創建不同的類庫(Class Library) Visual Studio允許在同一個Solution中創建多個項目 因此 我們可以在同一個Solution中加入ASP NET 應用程序和類庫Class Library項目 當你在編譯Solution時 每一個項目都會生成在bin目錄下生成一個assembly程序集文件 方法 我們可以手動復制 DLL文件到應用程序的bin目錄 方法 增加項目引用 當你編譯Solution時 第二種方法可以自動更新應用程序bin目錄的程序集文件 通過這種方式組織代碼 可以更容易修改/更新項目的特定代碼 也容易從不同的Server上遷移代碼 我不想深入探討架構 這里我通過截屏來解釋如何實現

假定你已經具備經典 層架構應用程序的設計經驗 我告訴你如何建立層與層之間的引用關系 接著你可以自己建立項目引用 圖 上的箭頭符號說明了不同層之間的交互 說明如下

( ) 數據訪問層引用Data Linq 層( 開源小組注 原文說還需要引用業務外觀(Business Facade)層 原文有誤)

( ) 業務外觀(Business Facade)層引用Data Linq 層和數據訪問層 因為業務外觀層使用Data Linq層的業務實體來創建表實體(後面進行詳細討論) 同時調用數據訪問層的方法

lishixin/Article/program/net/201311/12345

G. 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());
}

H. linq to sql類怎麼用

打開VS2010新建控制台應用程序,然後添加LINQ
to
SQL
Class,命名為DbApp.dbml,新建dbml文件之後,可以打開server
explorer,建立資料庫連接,並將我們新建的表拖到dbml文件中,
2.
可以通過點擊dbml文件空白處,按F4顯示dbml屬性,可以修改Context和生成實體的命名空間
3.
到現在為止VS2010通過工具為我們創建好了數據表對應實體類和數據表操作添,改,刪的方法,現在開始實踐

I. linqtosql怎麼動態的映射一個資料庫

1、映射資料庫
映射資料庫主要通過Database屬性來指定,引用命名空間System.Data.Linq.Mapping;
具體看如下代碼:

//這里在連接的時候 如果MyDatabase不指定Database屬性,生成的資料庫名為MyDbContext類名
//如果指定,則為Database屬性里的名稱,在這里生成的資料庫名為IThinks
[Database(Name = "IThinks")]
public class MyDbContext : DataContext
{
//必須構建此表,不然創建資料庫時會提示沒有表,無法創建。
public Table<LoginUser> LoginUsers;
public Table<UserBaseInfo> UserBaseInfos;
public Table<Aritcal> Articals;
public MyDbContext(string connection) : base(connection)
{
}

J. LINQ TO SQL的多表聯查

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