<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>慢步在雲端...    邱英瑞(Jacky) : LINQ</title><link>http://blogs.msdn.com/jchiou/archive/tags/LINQ/default.aspx</link><description>Tags: LINQ</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>LINQ to SQL 第五集 - 如何比對日期欄位的資料</title><link>http://blogs.msdn.com/jchiou/archive/2008/09/25/linq-to-sql-2.aspx</link><pubDate>Thu, 25 Sep 2008 13:08:43 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8964821</guid><dc:creator>jchiou</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/jchiou/comments/8964821.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jchiou/commentrss.aspx?PostID=8964821</wfw:commentRss><description>&lt;p&gt;取得訂單日期為 1998 年的資料，當然也可以比對 月(Month)&amp;#160; 或&amp;#160; 日(Day)。&lt;/p&gt;  &lt;p&gt;using System;   &lt;br /&gt;using System.Linq;    &lt;br /&gt;using System.Windows.Forms; &lt;/p&gt;  &lt;p&gt;namespace LinqToSql   &lt;br /&gt;{    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; public partial class MainForm : Form    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; public MainForm()    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; InitializeComponent();    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; } &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; private void Form1_Load(object sender, EventArgs e)   &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; NorthwindDataContext db = new NorthwindDataContext(); &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; var q = from o in db.Orders   &lt;br /&gt;&lt;font color="#ff0000"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; where o.OrderDate.&lt;strong&gt;Value.Year == 1998&lt;/strong&gt;&lt;/font&gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; select o; &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; dataGridView1.DataSource = q.ToList();   &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }    &lt;br /&gt;}&lt;/p&gt;  &lt;p&gt;執行結果：&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/jchiou/WindowsLiveWriter/LINQtoSQL2_FF22/image_2.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="292" alt="image" src="http://blogs.msdn.com/blogfiles/jchiou/WindowsLiveWriter/LINQtoSQL2_FF22/image_thumb.png" width="644" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Enjoy.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8964821" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jchiou/archive/tags/Visual+Studio+2008/default.aspx">Visual Studio 2008</category><category domain="http://blogs.msdn.com/jchiou/archive/tags/LINQ/default.aspx">LINQ</category></item><item><title>LINQ to SQL 第四集 - 如何取得 欄位 中 包含 某些特定字元的資料</title><link>http://blogs.msdn.com/jchiou/archive/2008/09/25/linq-to-sql-1.aspx</link><pubDate>Thu, 25 Sep 2008 13:03:32 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8964813</guid><dc:creator>jchiou</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/jchiou/comments/8964813.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jchiou/commentrss.aspx?PostID=8964813</wfw:commentRss><description>&lt;p&gt;如何取得 產品名稱 中 包含 ch 字元的資料，程式碼如下：&lt;/p&gt;  &lt;p&gt;using System;   &lt;br /&gt;using System.Linq;    &lt;br /&gt;using System.Windows.Forms; &lt;/p&gt;  &lt;p&gt;namespace LinqToSql   &lt;br /&gt;{    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; public partial class MainForm : Form    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; public MainForm()    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; InitializeComponent();    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; } &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; private void Form1_Load(object sender, EventArgs e)   &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; NorthwindDataContext db = new NorthwindDataContext(); &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; var products = from p in db.Products   &lt;br /&gt;&lt;font color="#ff0000"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; where p.ProductName.&lt;strong&gt;Contains(&amp;quot;ch&amp;quot;)&lt;/strong&gt;      &lt;br /&gt;&lt;/font&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; select p; &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; dataGridView1.DataSource = products.ToList();   &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }    &lt;br /&gt;}&lt;/p&gt;  &lt;p&gt;執行結果取得 產品名稱 中 包含 ch 字元的資料：&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/jchiou/WindowsLiveWriter/LINQtoSQL_FCE8/image_2.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="292" alt="image" src="http://blogs.msdn.com/blogfiles/jchiou/WindowsLiveWriter/LINQtoSQL_FCE8/image_thumb.png" width="644" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Enjoy.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8964813" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jchiou/archive/tags/Visual+Studio+2008/default.aspx">Visual Studio 2008</category><category domain="http://blogs.msdn.com/jchiou/archive/tags/LINQ/default.aspx">LINQ</category></item><item><title>LINQ to SQL 第三集 - 如何取得 產品名稱長度 小於 10 字元的資料</title><link>http://blogs.msdn.com/jchiou/archive/2008/09/25/linq-to-sql-10.aspx</link><pubDate>Thu, 25 Sep 2008 12:50:07 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8964796</guid><dc:creator>jchiou</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/jchiou/comments/8964796.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jchiou/commentrss.aspx?PostID=8964796</wfw:commentRss><description>&lt;p&gt;筆者陸續介紹一些字串處理的使用方法&lt;/p&gt;  &lt;p&gt;如何取得 產品名稱長度 小於 10 字元的資料，程式碼如下：&lt;/p&gt;  &lt;p&gt;using System;   &lt;br /&gt;using System.Linq;    &lt;br /&gt;using System.Windows.Forms;&lt;/p&gt;  &lt;p&gt;namespace LinqToSql   &lt;br /&gt;{    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; public partial class MainForm : Form    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; public MainForm()    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; InitializeComponent();    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; } &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; private void Form1_Load(object sender, EventArgs e)   &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; NorthwindDataContext db = new NorthwindDataContext(); &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; var products = from p in db.Products   &lt;br /&gt;&lt;font color="#ff0000"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; where p.ProductName.&lt;strong&gt;Length &amp;lt; 10&lt;/strong&gt;      &lt;br /&gt;&lt;/font&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; select p; &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; dataGridView1.DataSource = products.ToList();   &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }    &lt;br /&gt;}&lt;/p&gt;  &lt;p&gt;即會將『產品名稱』小於 10 的資料列出來：&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/jchiou/WindowsLiveWriter/LINQtoSQL10_FAC5/image_2.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="292" alt="image" src="http://blogs.msdn.com/blogfiles/jchiou/WindowsLiveWriter/LINQtoSQL10_FAC5/image_thumb.png" width="644" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Enjoy.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8964796" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jchiou/archive/tags/Visual+Studio+2008/default.aspx">Visual Studio 2008</category><category domain="http://blogs.msdn.com/jchiou/archive/tags/LINQ/default.aspx">LINQ</category></item><item><title>LINQ to XML 簡介</title><link>http://blogs.msdn.com/jchiou/archive/2008/09/24/linq-to-xml.aspx</link><pubDate>Wed, 24 Sep 2008 06:45:02 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8963076</guid><dc:creator>jchiou</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/jchiou/comments/8963076.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jchiou/commentrss.aspx?PostID=8963076</wfw:commentRss><description>&lt;p&gt;&lt;/p&gt;  &lt;p&gt;現在的應用程式開發中，XML 已被廣泛採用為格式化各種內容資料的方式。您可以在 Web、組態檔、Microsoft Office Word 檔案與資料庫中看到 XML 的運用。&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;LINQ to XML 是一個以 LINQ 為基礎，可讓您從 .NET Framework 程式設計語言內使用及操作 XML。&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;LINQ to XML 是經過重新設計，用以進行 XML 程式設計的最新方法。它提供文件物件模型 (DOM) 的記憶體中文件修改能力，而且支援 LINQ 查詢運算式。雖然這些查詢運算式在語法上與 XPath 不同，但是它們利用更強型別的方式，提供類似的功能。&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;如同文件物件模型 (DOM)，它會將 XML 文件帶到記憶體中。您可以查詢與修改文件，並在修改後儲存到檔案，或將其序列化並透過連線傳送。不過，LINQ to XML 與 DOM 不同：它所提供的新物件模型較為&lt;strong&gt;輕量且較容易使用&lt;/strong&gt;。&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;LINQ to XML 最重要的優點為其與 Language-Integrated Query (LINQ) 的整合能力。這種整合可讓您在記憶體中 XML 文件上撰寫查詢以擷取項目和屬性的集合。LINQ to XML 的查詢功能相當於 (雖然語法上不同) XPath 和 Xquery 的功能。&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;LINQ to XML 的目標為各種開發人員。對於只想要完成某些事情的一般開發人員而言，LINQ to XML 會提供類似 SQL 的查詢經驗，讓 XML 更容易。只需要稍微研究一下，程式設計人員就可以學到如何撰寫簡潔而且功能強大的查詢。&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;專業開發人員可以使用 LINQ to XML 大量增加其產能。他們可以利用 LINQ to XML 撰寫更明確、更精簡而且功能更強大的較少程式碼。&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8963076" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jchiou/archive/tags/Visual+Studio+2008/default.aspx">Visual Studio 2008</category><category domain="http://blogs.msdn.com/jchiou/archive/tags/LINQ/default.aspx">LINQ</category></item><item><title>LINQ 簡介</title><link>http://blogs.msdn.com/jchiou/archive/2008/09/24/linq.aspx</link><pubDate>Wed, 24 Sep 2008 05:26:50 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8963012</guid><dc:creator>jchiou</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/jchiou/comments/8963012.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jchiou/commentrss.aspx?PostID=8963012</wfw:commentRss><description>&lt;p&gt;Language-Integrated Query (LINQ) 對開發人員來說是一個突破性創舉，它填補了物件與資料之間的差距。&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;傳統上，資料查詢是以簡單的字串表示，既不會在編譯時期進行型別檢查，也不支援 IntelliSense。此外，您還必須針對&lt;strong&gt;&lt;font color="#ff0000"&gt;每種&lt;/font&gt;&lt;/strong&gt;資料來源學習&lt;strong&gt;&lt;font color="#ff0000"&gt;不同的&lt;/font&gt;&lt;/strong&gt;查詢語言：SQL 資料庫、XML 文件、各種 Web 服務等等。LINQ 將「查詢」(Query) 只要使用語言關鍵字和您熟悉的運算子，就可以針對強型別的物件集合撰寫查詢。&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;簡而言之，LINQ 設計的目的即是希望開發人員可以不用再去學習一堆不同的資料操作的語法。使用 LINQ 時，可以不用管後端的資料來源為何，皆可以用 LINQ 來做操作。&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;下圖顯示針對 SQL Server 資料庫以 C# 撰寫的局部完成 LINQ 查詢，其中有完整的型別檢查以及 IntelliSense 支援。&lt;/p&gt;  &lt;p&gt;&lt;img alt="具有 Intellisense 的 LINQ 查詢" src="http://i.msdn.microsoft.com/Bb397897.Query_Intell(zh-tw,VS.90).png" /&gt;&lt;/p&gt;  &lt;p&gt;在 Visual Studio 中，您可以使用 Visual Basic 或 C# 針對下列項目撰寫 LINQ 查詢：SQL Server 資料庫、XML 文件、ADO.NET Dataset，以及任何由支援 &lt;a href="http://msdn.microsoft.com/zh-tw/library/system.collections.ienumerable.aspx"&gt;IEnumerable&lt;/a&gt; 或泛型 &lt;a href="http://msdn.microsoft.com/zh-tw/library/9eekhta0.aspx"&gt;IEnumerable&amp;lt;(Of &amp;lt;(T&amp;gt;)&amp;gt;)&lt;/a&gt; 介面的物件組成的集合。同時也規劃有 ADO.NET Entity Framework 的 LINQ 支援。&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;您可以將 LINQ 查詢用在新專案中，也可以與現有專案中的非 LINQ 查詢一起使用。唯一條件是專案必須使用 .NET Framework &lt;strong&gt;3.5&lt;/strong&gt; 或以上的版本。&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8963012" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jchiou/archive/tags/Visual+Studio+2008/default.aspx">Visual Studio 2008</category><category domain="http://blogs.msdn.com/jchiou/archive/tags/LINQ/default.aspx">LINQ</category></item><item><title>LINQ to SQL 第二集 - Debug Visualizer</title><link>http://blogs.msdn.com/jchiou/archive/2008/09/23/linq-to-sql-debug-visualizer.aspx</link><pubDate>Tue, 23 Sep 2008 11:31:08 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8962040</guid><dc:creator>jchiou</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/jchiou/comments/8962040.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jchiou/commentrss.aspx?PostID=8962040</wfw:commentRss><description>&lt;p&gt;LINQ to SQL 可以讓我們很方便的操作資料庫的內容，但若遇到問題或是需要去細看其所執行的 T-SQL及結果，在 Visual Studio 中就不是那麼方便了。&lt;/p&gt;  &lt;p&gt;如下圖，T-SQL 語法無法完全顯示，需將 T-SQL 貼到 SQL Server 的管理工具或其它工具才較方便查看。&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/jchiou/WindowsLiveWriter/LINQtoSQLDebugVisualizer_E04B/image_2.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="462" alt="image" src="http://blogs.msdn.com/blogfiles/jchiou/WindowsLiveWriter/LINQtoSQLDebugVisualizer_E04B/image_thumb.png" width="644" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;筆者有使用一個小工具 LINQ to SQL Debug Visualizer，讓我們在 Visual Studio 中可以更方便檢視 LINQ 所執行的 T-SQL。&lt;/p&gt;  &lt;p&gt;由於 VS 2008 並沒有內建這個小工具，需要額外下載及安裝。&lt;/p&gt;  &lt;p&gt;要如何安裝它呢？&lt;/p&gt;  &lt;p&gt;1. 可以由&lt;a href="http://www.scottgu.com/blogposts/linqquery/SqlServerQueryVisualizer.zip"&gt;這裡下載&lt;/a&gt;。&lt;/p&gt;  &lt;p&gt;2. 將 SqlServerQueryVisualizer.zip 解壓縮，其中也包含它的原始程式碼。&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/jchiou/WindowsLiveWriter/LINQtoSQLDebugVisualizer_E04B/image_4.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="484" alt="image" src="http://blogs.msdn.com/blogfiles/jchiou/WindowsLiveWriter/LINQtoSQLDebugVisualizer_E04B/image_thumb_1.png" width="644" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;3. 確定所有的 Visual Studio 都已關閉。&lt;/p&gt;  &lt;p&gt;4. 把 &lt;strong&gt;\bin\debug\&lt;/strong&gt; 目錄中的 &lt;strong&gt;SqlServerQueryVisualizer.dll&lt;/strong&gt; 複製到 &lt;strong&gt;\Program Files\Microsoft Visual Studio 9.0\Common7\Packages\Debugger\Visualizers\&lt;/strong&gt; 中&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/jchiou/WindowsLiveWriter/LINQtoSQLDebugVisualizer_E04B/image_6.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="306" alt="image" src="http://blogs.msdn.com/blogfiles/jchiou/WindowsLiveWriter/LINQtoSQLDebugVisualizer_E04B/image_thumb_2.png" width="644" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;5. 開啟 Visual Studio 後，按 F5，執行 LinqToSql 的專案（該專案請參考&lt;a href="http://blogs.msdn.com/jchiou/archive/2008/09/23/linq-to-sql.aspx"&gt;LINQ To SQL 第一集&lt;/a&gt;）。&lt;/p&gt;  &lt;p&gt;6. 即可發現中斷點的部份，比起之前多了一個放大鏡的圖示，請與第一張圖對照即可發現不同。&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/jchiou/WindowsLiveWriter/LINQtoSQLDebugVisualizer_E04B/image_8.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="363" alt="image" src="http://blogs.msdn.com/blogfiles/jchiou/WindowsLiveWriter/LINQtoSQLDebugVisualizer_E04B/image_thumb_3.png" width="644" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;7. 當按下像放大鏡圖示時，會出現另一個視窗如下，上半部顯示 LINQ 的語法，下半部顯示其對映的 T-SQL。方便多了。&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/jchiou/WindowsLiveWriter/LINQtoSQLDebugVisualizer_E04B/image_12.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="311" alt="image" src="http://blogs.msdn.com/blogfiles/jchiou/WindowsLiveWriter/LINQtoSQLDebugVisualizer_E04B/image_thumb_5.png" width="644" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;8. 當我們勾選下方的『Original query』，可以發現 where 條件變為參數的顯示方式。&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/jchiou/WindowsLiveWriter/LINQtoSQLDebugVisualizer_E04B/image_14.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="311" alt="image" src="http://blogs.msdn.com/blogfiles/jchiou/WindowsLiveWriter/LINQtoSQLDebugVisualizer_E04B/image_thumb_6.png" width="644" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;9. 也可以按下『Execute』，得到執行後的結果，看一下是否為預期的結果。這個功能筆者也喜歡。&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/jchiou/WindowsLiveWriter/LINQtoSQLDebugVisualizer_E04B/image_16.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="364" alt="image" src="http://blogs.msdn.com/blogfiles/jchiou/WindowsLiveWriter/LINQtoSQLDebugVisualizer_E04B/image_thumb_7.png" width="644" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;筆者的環環境為 Vista SP1 + VSTS 2008 SP1 + SQL 2005 Express SP2&lt;/p&gt;  &lt;p&gt;Hope this helps.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8962040" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jchiou/archive/tags/SQL+Server+2005/default.aspx">SQL Server 2005</category><category domain="http://blogs.msdn.com/jchiou/archive/tags/Visual+Studio+2008/default.aspx">Visual Studio 2008</category><category domain="http://blogs.msdn.com/jchiou/archive/tags/SQL+Server+2008/default.aspx">SQL Server 2008</category><category domain="http://blogs.msdn.com/jchiou/archive/tags/LINQ/default.aspx">LINQ</category></item><item><title>LINQ to SQL 第一集</title><link>http://blogs.msdn.com/jchiou/archive/2008/09/23/linq-to-sql.aspx</link><pubDate>Tue, 23 Sep 2008 10:30:15 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8962000</guid><dc:creator>jchiou</dc:creator><slash:comments>4</slash:comments><comments>http://blogs.msdn.com/jchiou/comments/8962000.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jchiou/commentrss.aspx?PostID=8962000</wfw:commentRss><description>&lt;p&gt;LINQ 如何與 SQL Server 資料庫整合？Visual Studio 2008 又有那些方便的功能可以協助我們呢？&lt;/p&gt;  &lt;p&gt;今天筆者建立一個簡單的 Windows Form 的應用程式 + 不到 10 行的程式碼來示範這個部份。&lt;/p&gt;  &lt;p&gt;步驟如下：&lt;/p&gt;  &lt;p&gt;1. 開啟 VS 2008 並新增一個 Windows Form 專案，命名為『LinqToSql』&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/jchiou/WindowsLiveWriter/LINQtoSQL_D9BF/image_2.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="458" alt="image" src="http://blogs.msdn.com/blogfiles/jchiou/WindowsLiveWriter/LINQtoSQL_D9BF/image_thumb.png" width="644" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;2. 拖工具箱拖一個 DataGridView 到表單上，並設定『Dock in parent container』&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/jchiou/WindowsLiveWriter/LINQtoSQL_D9BF/image_4.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="297" alt="image" src="http://blogs.msdn.com/blogfiles/jchiou/WindowsLiveWriter/LINQtoSQL_D9BF/image_thumb_1.png" width="644" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;3. 對專案加入一毎新項目『LINQ to SQL Classes』，並命名為『Northwind.dbml』&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/jchiou/WindowsLiveWriter/LINQtoSQL_D9BF/image_6.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="388" alt="image" src="http://blogs.msdn.com/blogfiles/jchiou/WindowsLiveWriter/LINQtoSQL_D9BF/image_thumb_2.png" width="644" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;4. 在伺服器總管，設定連線到 SQL Express 的 Northwind 範例資料庫，並將 Category、Product、Order及 Order_Detail 拖到 Northwind.dbml 中&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/jchiou/WindowsLiveWriter/LINQtoSQL_D9BF/image_8.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="438" alt="image" src="http://blogs.msdn.com/blogfiles/jchiou/WindowsLiveWriter/LINQtoSQL_D9BF/image_thumb_3.png" width="644" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;5. 在 Form1_Load 加入下列 5 行程式碼&lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; private void Form1_Load(object sender, EventArgs e)   &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; NorthwindDataContext db = new NorthwindDataContext(); &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; var products = (from p in db.Products   &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; where p.Category.CategoryName.StartsWith(&amp;quot;C&amp;quot;)    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; select p).Skip(10).Take(10);    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; dataGridView1.DataSource = products;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; // 上述的程式碼會取得在 Product 中，其 Category 的 CategoryName 為 C 開頭的資料&lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; // 跳過前 10 筆資料後，再取出 10 筆資料來顯示&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;6. 執行這個應用程式&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/jchiou/WindowsLiveWriter/LINQtoSQL_D9BF/image_10.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="292" alt="image" src="http://blogs.msdn.com/blogfiles/jchiou/WindowsLiveWriter/LINQtoSQL_D9BF/image_thumb_4.png" width="644" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;當然也可加入新增、修改、刪除等功能。LINQ 的語法也可以使更多的變化。&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;筆者的環境為 Vista SP1 + VSTS 2008 SP1 + SQL 2005 Express w/SP2&lt;/p&gt;  &lt;p&gt;Hope this helps.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8962000" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jchiou/archive/tags/SQL+Server+2005/default.aspx">SQL Server 2005</category><category domain="http://blogs.msdn.com/jchiou/archive/tags/Visual+Studio+2008/default.aspx">Visual Studio 2008</category><category domain="http://blogs.msdn.com/jchiou/archive/tags/LINQ/default.aspx">LINQ</category></item></channel></rss>