无涯教程-LINQ - 数据集

52 阅读4分钟

数据集在内存中提供了极为有用的数据表示形式,并用于各种基于数据的应用程序。 LINQ to Dataset是LINQ to ADO.NET的技术之一,它有助于轻松地对Dataset的数据执行查询,并提高了生产率。

LINQ数据集

LINQ to Dataset使开发人员的查询任务变得简单,他们不需要用特定的查询语言编写查询,而是可以用编程语言编写查询, LINQ to Dataset也可用于查询从多个数据源合并数据的位置,就像LINQ to SQL和LINQ to XML一样,它也不需要任何LINQ提供程序来访问内存集合中的数据。

以下是LINQ to Dataset查询的简单示例,其中首先获取数据源,然后用两个数据表填充数据集。在两个表之间创建关系,并通过join子句针对两个表创建LINQ查询。最后,使用foreach循环显示所需的输出。

C#

using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace LINQtoDataset { class Program { static void Main(string[] args) {

     </span><span class="kwd">string</span><span class="pln"> connectString </span><span class="pun">=</span><span class="pln"> </span><span class="typ">System</span><span class="pun">.</span><span class="typ">Configuration</span><span class="pun">.</span><span class="typ">ConfigurationManager</span><span class="pun">.</span><span class="typ">ConnectionStrings</span><span class="pun">[</span><span class="str">"LinqToSQLDBConnectionString"</span><span class="pun">].</span><span class="typ">ToString</span><span class="pun">();</span><span class="pln">

     </span><span class="kwd">string</span><span class="pln"> sqlSelect </span><span class="pun">=</span><span class="pln"> </span><span class="str">"SELECT * FROM Department;"</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="str">"SELECT * FROM Employee;"</span><span class="pun">;</span><span class="pln">

     </span><span class="com">//创建数据适配器以从数据库中检索数据</span><span class="pln">
     </span><span class="typ">SqlDataAdapter</span><span class="pln"> da </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">SqlDataAdapter</span><span class="pun">(</span><span class="pln">sqlSelect</span><span class="pun">,</span><span class="pln"> connectString</span><span class="pun">);</span><span class="pln">
    
     </span><span class="com">//创建表映射</span><span class="pln">
     da</span><span class="pun">.</span><span class="typ">TableMappings</span><span class="pun">.</span><span class="typ">Add</span><span class="pun">(</span><span class="str">"Table"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"Department"</span><span class="pun">);</span><span class="pln">
     da</span><span class="pun">.</span><span class="typ">TableMappings</span><span class="pun">.</span><span class="typ">Add</span><span class="pun">(</span><span class="str">"Table1"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"Employee"</span><span class="pun">);</span><span class="pln">

     </span><span class="com">//创建并填充数据集</span><span class="pln">
     </span><span class="typ">DataSet</span><span class="pln"> ds </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">DataSet</span><span class="pun">();</span><span class="pln">
     da</span><span class="pun">.</span><span class="typ">Fill</span><span class="pun">(</span><span class="pln">ds</span><span class="pun">);</span><span class="pln">

     </span><span class="typ">DataRelation</span><span class="pln"> dr </span><span class="pun">=</span><span class="pln"> ds</span><span class="pun">.</span><span class="typ">Relations</span><span class="pun">.</span><span class="typ">Add</span><span class="pun">(</span><span class="str">"FK_Employee_Department"</span><span class="pun">,</span><span class="pln">
                       ds</span><span class="pun">.</span><span class="typ">Tables</span><span class="pun">[</span><span class="str">"Department"</span><span class="pun">].</span><span class="typ">Columns</span><span class="pun">[</span><span class="str">"DepartmentId"</span><span class="pun">],</span><span class="pln">
                       ds</span><span class="pun">.</span><span class="typ">Tables</span><span class="pun">[</span><span class="str">"Employee"</span><span class="pun">].</span><span class="typ">Columns</span><span class="pun">[</span><span class="str">"DepartmentId"</span><span class="pun">]);</span><span class="pln">

     </span><span class="typ">DataTable</span><span class="pln"> department </span><span class="pun">=</span><span class="pln"> ds</span><span class="pun">.</span><span class="typ">Tables</span><span class="pun">[</span><span class="str">"Department"</span><span class="pun">];</span><span class="pln">
     </span><span class="typ">DataTable</span><span class="pln"> employee </span><span class="pun">=</span><span class="pln"> ds</span><span class="pun">.</span><span class="typ">Tables</span><span class="pun">[</span><span class="str">"Employee"</span><span class="pun">];</span><span class="pln">

     </span><span class="kwd">var</span><span class="pln"> query </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">from</span><span class="pln"> d </span><span class="kwd">in</span><span class="pln"> department</span><span class="pun">.</span><span class="typ">AsEnumerable</span><span class="pun">()</span><span class="pln">
                 </span><span class="kwd">join</span><span class="pln"> e </span><span class="kwd">in</span><span class="pln"> employee</span><span class="pun">.</span><span class="typ">AsEnumerable</span><span class="pun">()</span><span class="pln">
                 on d</span><span class="pun">.</span><span class="typ">Field</span><span class="str">&lt;int&gt;</span><span class="pun">(</span><span class="str">"DepartmentId"</span><span class="pun">)</span><span class="pln"> equals
                 e</span><span class="pun">.</span><span class="typ">Field</span><span class="str">&lt;int&gt;</span><span class="pun">(</span><span class="str">"DepartmentId"</span><span class="pun">)</span><span class="pln">                        
                 </span><span class="kwd">select</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
                    </span><span class="typ">EmployeeId</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> e</span><span class="pun">.</span><span class="typ">Field</span><span class="str">&lt;int&gt;</span><span class="pun">(</span><span class="str">"EmployeeId"</span><span class="pun">),</span><span class="pln">
                    </span><span class="typ">Name</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> e</span><span class="pun">.</span><span class="typ">Field</span><span class="str">&lt;string&gt;</span><span class="pun">(</span><span class="str">"Name"</span><span class="pun">),</span><span class="pln">                            
                    </span><span class="typ">DepartmentId</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> d</span><span class="pun">.</span><span class="typ">Field</span><span class="str">&lt;int&gt;</span><span class="pun">(</span><span class="str">"DepartmentId"</span><span class="pun">),</span><span class="pln">                            
                    </span><span class="typ">DepartmentName</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> d</span><span class="pun">.</span><span class="typ">Field</span><span class="str">&lt;string&gt;</span><span class="pun">(</span><span class="str">"Name"</span><span class="pun">)</span><span class="pln">
                 </span><span class="pun">};</span><span class="pln">

     </span><span class="kwd">foreach</span><span class="pln"> </span><span class="pun">(</span><span class="kwd">var</span><span class="pln"> q </span><span class="kwd">in</span><span class="pln"> query</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
        </span><span class="typ">Console</span><span class="pun">.</span><span class="typ">WriteLine</span><span class="pun">(</span><span class="str">"Employee Id={0} , Name={1} , Department Name={2}"</span><span class="pun">,</span><span class="pln">
           q</span><span class="pun">.</span><span class="typ">EmployeeId</span><span class="pun">,</span><span class="pln"> q</span><span class="pun">.</span><span class="typ">Name</span><span class="pun">,</span><span class="pln"> q</span><span class="pun">.</span><span class="typ">DepartmentName</span><span class="pun">);</span><span class="pln">
     </span><span class="pun">}</span><span class="pln">

     </span><span class="typ">Console</span><span class="pun">.</span><span class="typ">WriteLine</span><span class="pun">(</span><span class="str">"\nPress any key to continue."</span><span class="pun">);</span><span class="pln">
     </span><span class="typ">Console</span><span class="pun">.</span><span class="typ">ReadKey</span><span class="pun">();</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">

} }

VB

Imports System.Data.SqlClient
Imports System.Linq

Module LinqToDataSet

Sub Main()

  </span><span class="typ">Dim</span><span class="pln"> connectString </span><span class="typ">As</span><span class="pln"> </span><span class="typ">String</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">System</span><span class="pun">.</span><span class="typ">Configuration</span><span class="pun">.</span><span class="typ">ConfigurationManager</span><span class="pun">.</span><span class="typ">ConnectionStrings</span><span class="pun">(</span><span class="str">"LinqToSQLDBConnectionString"</span><span class="pun">).</span><span class="typ">ToString</span><span class="pun">()</span><span class="pln">

  </span><span class="typ">Dim</span><span class="pln"> sqlSelect </span><span class="typ">As</span><span class="pln"> </span><span class="typ">String</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="str">"SELECT * FROM Department;"</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="str">"SELECT * FROM Employee;"</span><span class="pln">
  </span><span class="typ">Dim</span><span class="pln"> sqlCnn </span><span class="typ">As</span><span class="pln"> </span><span class="typ">SqlConnection</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">New</span><span class="pln"> </span><span class="typ">SqlConnection</span><span class="pun">(</span><span class="pln">connectString</span><span class="pun">)</span><span class="pln">
  sqlCnn</span><span class="pun">.</span><span class="typ">Open</span><span class="pun">()</span><span class="pln">

  </span><span class="typ">Dim</span><span class="pln"> da </span><span class="typ">As</span><span class="pln"> </span><span class="typ">New</span><span class="pln"> </span><span class="typ">SqlDataAdapter</span><span class="pln">
  da</span><span class="pun">.</span><span class="typ">SelectCommand</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">New</span><span class="pln"> </span><span class="typ">SqlCommand</span><span class="pun">(</span><span class="pln">sqlSelect</span><span class="pun">,</span><span class="pln"> sqlCnn</span><span class="pun">)</span><span class="pln">

  da</span><span class="pun">.</span><span class="typ">TableMappings</span><span class="pun">.</span><span class="typ">Add</span><span class="pun">(</span><span class="str">"Table"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"Department"</span><span class="pun">)</span><span class="pln">
  da</span><span class="pun">.</span><span class="typ">TableMappings</span><span class="pun">.</span><span class="typ">Add</span><span class="pun">(</span><span class="str">"Table1"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"Employee"</span><span class="pun">)</span><span class="pln">

  </span><span class="typ">Dim</span><span class="pln"> ds </span><span class="typ">As</span><span class="pln"> </span><span class="typ">New</span><span class="pln"> </span><span class="typ">DataSet</span><span class="pun">()</span><span class="pln">
  da</span><span class="pun">.</span><span class="typ">Fill</span><span class="pun">(</span><span class="pln">ds</span><span class="pun">)</span><span class="pln">

  </span><span class="typ">Dim</span><span class="pln"> dr </span><span class="typ">As</span><span class="pln"> </span><span class="typ">DataRelation</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> ds</span><span class="pun">.</span><span class="typ">Relations</span><span class="pun">.</span><span class="typ">Add</span><span class="pun">(</span><span class="str">"FK_Employee_Department"</span><span class="pun">,</span><span class="pln"> ds</span><span class="pun">.</span><span class="typ">Tables</span><span class="pun">(</span><span class="str">"Department"</span><span class="pun">).</span><span class="typ">Columns</span><span class="pun">(</span><span class="str">"DepartmentId"</span><span class="pun">),</span><span class="pln"> ds</span><span class="pun">.</span><span class="typ">Tables</span><span class="pun">(</span><span class="str">"Employee"</span><span class="pun">).</span><span class="typ">Columns</span><span class="pun">(</span><span class="str">"DepartmentId"</span><span class="pun">))</span><span class="pln">

  </span><span class="typ">Dim</span><span class="pln"> department </span><span class="typ">As</span><span class="pln"> </span><span class="typ">DataTable</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> ds</span><span class="pun">.</span><span class="typ">Tables</span><span class="pun">(</span><span class="str">"Department"</span><span class="pun">)</span><span class="pln">
  </span><span class="typ">Dim</span><span class="pln"> employee </span><span class="typ">As</span><span class="pln"> </span><span class="typ">DataTable</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> ds</span><span class="pun">.</span><span class="typ">Tables</span><span class="pun">(</span><span class="str">"Employee"</span><span class="pun">)</span><span class="pln">

  </span><span class="typ">Dim</span><span class="pln"> query </span><span class="pun">=</span><span class="pln"> </span><span class="typ">From</span><span class="pln"> d </span><span class="typ">In</span><span class="pln"> department</span><span class="pun">.</span><span class="typ">AsEnumerable</span><span class="pun">()</span><span class="pln">
              </span><span class="typ">Join</span><span class="pln"> e </span><span class="typ">In</span><span class="pln"> employee</span><span class="pun">.</span><span class="typ">AsEnumerable</span><span class="pun">()</span><span class="pln"> </span><span class="typ">On</span><span class="pln"> d</span><span class="pun">.</span><span class="typ">Field</span><span class="pun">(</span><span class="typ">Of</span><span class="pln"> </span><span class="typ">Integer</span><span class="pun">)(</span><span class="str">"DepartmentId"</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Equals</span><span class="pln">
              e</span><span class="pun">.</span><span class="typ">Field</span><span class="pun">(</span><span class="typ">Of</span><span class="pln"> </span><span class="typ">Integer</span><span class="pun">)(</span><span class="str">"DepartmentId"</span><span class="pun">)</span><span class="pln">
              </span><span class="typ">Select</span><span class="pln"> </span><span class="typ">New</span><span class="pln"> </span><span class="typ">Person</span><span class="pln"> </span><span class="typ">With</span><span class="pln"> </span><span class="pun">{</span><span class="pln"> _
                    </span><span class="pun">.</span><span class="typ">EmployeeId</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> e</span><span class="pun">.</span><span class="typ">Field</span><span class="pun">(</span><span class="typ">Of</span><span class="pln"> </span><span class="typ">Integer</span><span class="pun">)(</span><span class="str">"EmployeeId"</span><span class="pun">),</span><span class="pln">
                    </span><span class="pun">.</span><span class="typ">EmployeeName</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> e</span><span class="pun">.</span><span class="typ">Field</span><span class="pun">(</span><span class="typ">Of</span><span class="pln"> </span><span class="typ">String</span><span class="pun">)(</span><span class="str">"Name"</span><span class="pun">),</span><span class="pln">
                    </span><span class="pun">.</span><span class="typ">DepartmentId</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> d</span><span class="pun">.</span><span class="typ">Field</span><span class="pun">(</span><span class="typ">Of</span><span class="pln"> </span><span class="typ">Integer</span><span class="pun">)(</span><span class="str">"DepartmentId"</span><span class="pun">),</span><span class="pln">
                    </span><span class="pun">.</span><span class="typ">DepartmentName</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> d</span><span class="pun">.</span><span class="typ">Field</span><span class="pun">(</span><span class="typ">Of</span><span class="pln"> </span><span class="typ">String</span><span class="pun">)(</span><span class="str">"Name"</span><span class="pun">)</span><span class="pln">
              </span><span class="pun">}</span><span class="pln">

  </span><span class="typ">For</span><span class="pln"> </span><span class="typ">Each</span><span class="pln"> e </span><span class="typ">In</span><span class="pln"> query
     </span><span class="typ">Console</span><span class="pun">.</span><span class="typ">WriteLine</span><span class="pun">(</span><span class="str">"Employee Id={0} , Name={1} , Department Name={2}"</span><span class="pun">,</span><span class="pln"> e</span><span class="pun">.</span><span class="typ">EmployeeId</span><span class="pun">,</span><span class="pln"> e</span><span class="pun">.</span><span class="typ">EmployeeName</span><span class="pun">,</span><span class="pln"> e</span><span class="pun">.</span><span class="typ">DepartmentName</span><span class="pun">)</span><span class="pln">
  </span><span class="typ">Next</span><span class="pln">

  </span><span class="typ">Console</span><span class="pun">.</span><span class="typ">WriteLine</span><span class="pun">(</span><span class="pln">vbLf </span><span class="pun">&amp;</span><span class="pln"> </span><span class="str">"Press any key to continue."</span><span class="pun">)</span><span class="pln">
  </span><span class="typ">Console</span><span class="pun">.</span><span class="typ">ReadKey</span><span class="pun">()</span><span class="pln">
  

End Sub

Class Person Public Property EmployeeId As Integer Public Property EmployeeName As String Public Property DepartmentId As Integer Public Property DepartmentName As String End Class

End Module

编译并执行以上C#或VB的代码时,将产生以下输出-

Employee Id=1, Name=William, Department Name=Account
Employee Id=2, Name=Benjamin, Department Name=Account
Employee Id=3, Name=Miley, Department Name=Sales

Press any key to continue.

查询数据集

在开始使用LINQ to Dataset查询数据集之前,将数据加载到Dataset是至关重要的,这可以通过使用DataAdapter类或LINQ to SQL来完成。使用LINQ to Dataset进行查询的方式与将LINQ与其他启用LINQ的数据源一起使用来进行查询的方式非常相似。

在以下单表查询中,将从SalesOrderHeaderTtable收集所有在线订单,然后将订单ID,订单日期以及订单号显示为输出。

C#

using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace LinqToDataset { class SingleTable { static void Main(string[] args) {

     </span><span class="kwd">string</span><span class="pln"> connectString </span><span class="pun">=</span><span class="pln"> </span><span class="typ">System</span><span class="pun">.</span><span class="typ">Configuration</span><span class="pun">.</span><span class="typ">ConfigurationManager</span><span class="pun">.</span><span class="typ">ConnectionStrings</span><span class="pun">[</span><span class="str">"LinqToSQLDBConnectionString"</span><span class="pun">].</span><span class="typ">ToString</span><span class="pun">();</span><span class="pln">

     </span><span class="kwd">string</span><span class="pln"> sqlSelect </span><span class="pun">=</span><span class="pln"> </span><span class="str">"SELECT * FROM Department;"</span><span class="pun">;</span><span class="pln">

     </span><span class="com">//创建数据适配器以从数据库中查询数据</span><span class="pln">
     </span><span class="typ">SqlDataAdapter</span><span class="pln"> da </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">SqlDataAdapter</span><span class="pun">(</span><span class="pln">sqlSelect</span><span class="pun">,</span><span class="pln"> connectString</span><span class="pun">);</span><span class="pln">

     </span><span class="com">//创建表映射</span><span class="pln">
     da</span><span class="pun">.</span><span class="typ">TableMappings</span><span class="pun">.</span><span class="typ">Add</span><span class="pun">(</span><span class="str">"Table"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"Department"</span><span class="pun">);</span><span class="pln">           

     </span><span class="com">//创建并填充数据集</span><span class="pln">
     </span><span class="typ">DataSet</span><span class="pln"> ds </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">DataSet</span><span class="pun">();</span><span class="pln">
     da</span><span class="pun">.</span><span class="typ">Fill</span><span class="pun">(</span><span class="pln">ds</span><span class="pun">);</span><span class="pln">

     </span><span class="typ">DataTable</span><span class="pln"> department </span><span class="pun">=</span><span class="pln"> ds</span><span class="pun">.</span><span class="typ">Tables</span><span class="pun">[</span><span class="str">"Department"</span><span class="pun">];</span><span class="pln">            

     </span><span class="kwd">var</span><span class="pln"> query </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">from</span><span class="pln"> d </span><span class="kwd">in</span><span class="pln"> department</span><span class="pun">.</span><span class="typ">AsEnumerable</span><span class="pun">()</span><span class="pln">                        
     </span><span class="kwd">select</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
        </span><span class="typ">DepartmentId</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> d</span><span class="pun">.</span><span class="typ">Field</span><span class="str">&lt;int&gt;</span><span class="pun">(</span><span class="str">"DepartmentId"</span><span class="pun">),</span><span class="pln">
        </span><span class="typ">DepartmentName</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> d</span><span class="pun">.</span><span class="typ">Field</span><span class="str">&lt;string&gt;</span><span class="pun">(</span><span class="str">"Name"</span><span class="pun">)</span><span class="pln">
     </span><span class="pun">};</span><span class="pln">

     </span><span class="kwd">foreach</span><span class="pln"> </span><span class="pun">(</span><span class="kwd">var</span><span class="pln"> q </span><span class="kwd">in</span><span class="pln"> query</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
        </span><span class="typ">Console</span><span class="pun">.</span><span class="typ">WriteLine</span><span class="pun">(</span><span class="str">"Department Id={0} , Name={1}"</span><span class="pun">,</span><span class="pln">
           q</span><span class="pun">.</span><span class="typ">DepartmentId</span><span class="pun">,</span><span class="pln"> q</span><span class="pun">.</span><span class="typ">DepartmentName</span><span class="pun">);</span><span class="pln">
     </span><span class="pun">}</span><span class="pln">

     </span><span class="typ">Console</span><span class="pun">.</span><span class="typ">WriteLine</span><span class="pun">(</span><span class="str">"\nPress any key to continue."</span><span class="pun">);</span><span class="pln">
     </span><span class="typ">Console</span><span class="pun">.</span><span class="typ">ReadKey</span><span class="pun">();</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">

} }

VB

Imports System.Data.SqlClient
Imports System.Linq

Module LinqToDataSet

Sub Main()

  </span><span class="typ">Dim</span><span class="pln"> connectString </span><span class="typ">As</span><span class="pln"> </span><span class="typ">String</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">System</span><span class="pun">.</span><span class="typ">Configuration</span><span class="pun">.</span><span class="typ">ConfigurationManager</span><span class="pun">.</span><span class="typ">ConnectionStrings</span><span class="pun">(</span><span class="str">"LinqToSQLDBConnectionString"</span><span class="pun">).</span><span class="typ">ToString</span><span class="pun">()</span><span class="pln">

  </span><span class="typ">Dim</span><span class="pln"> sqlSelect </span><span class="typ">As</span><span class="pln"> </span><span class="typ">String</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="str">"SELECT * FROM Department;"</span><span class="pln">
  </span><span class="typ">Dim</span><span class="pln"> sqlCnn </span><span class="typ">As</span><span class="pln"> </span><span class="typ">SqlConnection</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">New</span><span class="pln"> </span><span class="typ">SqlConnection</span><span class="pun">(</span><span class="pln">connectString</span><span class="pun">)</span><span class="pln">
  sqlCnn</span><span class="pun">.</span><span class="typ">Open</span><span class="pun">()</span><span class="pln">

  </span><span class="typ">Dim</span><span class="pln"> da </span><span class="typ">As</span><span class="pln"> </span><span class="typ">New</span><span class="pln"> </span><span class="typ">SqlDataAdapter</span><span class="pln">
  da</span><span class="pun">.</span><span class="typ">SelectCommand</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">New</span><span class="pln"> </span><span class="typ">SqlCommand</span><span class="pun">(</span><span class="pln">sqlSelect</span><span class="pun">,</span><span class="pln"> sqlCnn</span><span class="pun">)</span><span class="pln">

  da</span><span class="pun">.</span><span class="typ">TableMappings</span><span class="pun">.</span><span class="typ">Add</span><span class="pun">(</span><span class="str">"Table"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"Department"</span><span class="pun">)</span><span class="pln">
  </span><span class="typ">Dim</span><span class="pln"> ds </span><span class="typ">As</span><span class="pln"> </span><span class="typ">New</span><span class="pln"> </span><span class="typ">DataSet</span><span class="pun">()</span><span class="pln">
  da</span><span class="pun">.</span><span class="typ">Fill</span><span class="pun">(</span><span class="pln">ds</span><span class="pun">)</span><span class="pln">

  </span><span class="typ">Dim</span><span class="pln"> department </span><span class="typ">As</span><span class="pln"> </span><span class="typ">DataTable</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> ds</span><span class="pun">.</span><span class="typ">Tables</span><span class="pun">(</span><span class="str">"Department"</span><span class="pun">)</span><span class="pln">

  </span><span class="typ">Dim</span><span class="pln"> query </span><span class="pun">=</span><span class="pln"> </span><span class="typ">From</span><span class="pln"> d </span><span class="typ">In</span><span class="pln"> department</span><span class="pun">.</span><span class="typ">AsEnumerable</span><span class="pun">()</span><span class="pln">
  </span><span class="typ">Select</span><span class="pln"> </span><span class="typ">New</span><span class="pln"> </span><span class="typ">DepartmentDetail</span><span class="pln"> </span><span class="typ">With</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
     </span><span class="pun">.</span><span class="typ">DepartmentId</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> d</span><span class="pun">.</span><span class="typ">Field</span><span class="pun">(</span><span class="typ">Of</span><span class="pln"> </span><span class="typ">Integer</span><span class="pun">)(</span><span class="str">"DepartmentId"</span><span class="pun">),</span><span class="pln">
        </span><span class="pun">.</span><span class="typ">DepartmentName</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> d</span><span class="pun">.</span><span class="typ">Field</span><span class="pun">(</span><span class="typ">Of</span><span class="pln"> </span><span class="typ">String</span><span class="pun">)(</span><span class="str">"Name"</span><span class="pun">)</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">

  </span><span class="typ">For</span><span class="pln"> </span><span class="typ">Each</span><span class="pln"> e </span><span class="typ">In</span><span class="pln"> query
     </span><span class="typ">Console</span><span class="pun">.</span><span class="typ">WriteLine</span><span class="pun">(</span><span class="str">"Department Id={0} , Name={1}"</span><span class="pun">,</span><span class="pln"> e</span><span class="pun">.</span><span class="typ">DepartmentId</span><span class="pun">,</span><span class="pln"> e</span><span class="pun">.</span><span class="typ">DepartmentName</span><span class="pun">)</span><span class="pln">
  </span><span class="typ">Next</span><span class="pln">

  </span><span class="typ">Console</span><span class="pun">.</span><span class="typ">WriteLine</span><span class="pun">(</span><span class="pln">vbLf </span><span class="pun">&amp;</span><span class="pln"> </span><span class="str">"Press any key to continue."</span><span class="pun">)</span><span class="pln">
  </span><span class="typ">Console</span><span class="pun">.</span><span class="typ">ReadKey</span><span class="pun">()</span><span class="pln">

End Sub

Public Class DepartmentDetail Public Property DepartmentId As Integer Public Property DepartmentName As String End Class

End Module

编译并执行以上C#或VB的代码时,将产生以下输出-

Department Id=1, Name=Account
Department Id=2, Name=Sales
Department Id=3, Name=Pre-Sales
Department Id=4, Name=Marketing

Press any key to continue.

参考链接

www.learnfk.com/linq/linq-d…