DataSet là một hình thức bộ nhớ trong của dữ liệu quan hệ và từ lâu đã là một phần chủ yếu của việc truy cập dữ liệu trong thế giới .NET. LNQ to Dataset cho phép sử dụng các toán tử truy vấn chuẩn để truy vấn đến dữ liệu trong DataTable hay DataSet.
Trước khi bắt đầu truy vấn một DataSet dùng LINQ to Dataset, Dataset cần được nạp dữ liệu bằng cách dùng lớp DataAdapter hay dùng LINQ to SQL. LINQ to Dataset làm việc với Dataset có kiểu (typed Dataset) và không kiểu (untyped Dataset). Với Dataset không kiểu, LINQ to Dataset cung cấp các phương thức mở rộng như Field<T> cho phép gán kiểu vào truy vấn.
Trở lại ví dụ về hai bảng Genre và Review trong cơ sở dữ liệu ngocminhADO

Chúng ta nạp dữ liệu từ bảng Genre và Review vào Dataset bằng lớp DataAdapter, truy vấn LINQ được tạo và vòng lặp foreach được dùng để hiển thị kết quả.
Mã VB:
Module Module1
Sub Main()
' tạo chuỗi kết nối
Dim connectString As String = System.Configuration.ConfigurationManager.
ConnectionStrings("LinqFirst.My.MySettings.ngocminhADOConnectionString")
.ToString()
' tạo câu truy vấn SQL
Dim sqlSelect As String = "SELECT * FROM Genre;" + "SELECT * FROM Review;"
Dim sqlCnn As SqlConnection = New SqlConnection(connectString)
' mở kết nối
sqlCnn.Open()
' dùng lớp DataAdapter để nạp dữ liệu vào Dataset
Dim da As New SqlDataAdapter
da.SelectCommand = New SqlCommand(sqlSelect, sqlCnn)
da.TableMappings.Add("Table", "Genre")
da.TableMappings.Add("Table1", "Review")
Dim ds As New DataSet()
da.Fill(ds)
' thiết lập quan hệ hai DataTable trong Dataset
Dim dr As DataRelation = ds.Relations.Add("FK_Genre_Review",
ds.Tables("Genre").Columns("ID"),
ds.Tables("Review").Columns("GenreId"))
Dim genre As DataTable = ds.Tables("Genre")
Dim review As DataTable = ds.Tables("Review")
' tạo và thực thi truy vấn LINQ to Dataset
Dim query = From d In genre.AsEnumerable()
Join e In review.AsEnumerable()
On d.Field(Of Integer)("ID")
Equals e.Field(Of Integer)("GenreId")
Select New Music With {
.GenreID = d.Field(Of Integer)("ID"),
.GenreName = d.Field(Of String)("Name"),
.ReviewID = e.Field(Of Integer)("ID"),
.ReviewTitle = e.Field(Of String)("Title")
}
' Hiển thị kết quả
For Each e In query
Console.WriteLine("Genre Id = {0} , Name = {1} , Title = {2}",
e.GenreID, e.GenreName, e.ReviewTitle)
Next
End Sub
Class Music
Public Property GenreID As Integer
Public Property GenreName As String
Public Property ReviewID As Integer
Public Property ReviewTitle As String
End Class
End Module
Mã C#:
class Programm
{
static void Main(string[] args)
{
// tạo chuỗi kết nối
string connectString = System.Configuration.ConfigurationManager.
ConnectionStrings("LinqFirst.My.MySettings.ngocminhADOConnectionString").
ToString();
// tạo câu truy vấn SQL
string sqlSelect = "SELECT * FROM Genre;" + "SELECT * FROM Review;";
// dùng lớp DataAdapter để nạp dữ liệu vào Dataset
SqlDataAdapter da = new SqlDataAdapter(sqlSelect, connectString);
da.SelectCommand = New SqlCommand(sqlSelect, sqlCnn);
da.TableMappings.Add("Table", "Genre");
da.TableMappings.Add("Table1", "Review");
Dim ds As New DataSet();
da.Fill(ds);
// thiết lập quan hệ hai DataTable trong Dataset
DataRelation dr = ds.Relations.Add("FK_Genre_Review",
ds.Tables["Genre"].Columns["ID"],
ds.Tables["Review"].Columns["GenreId"]);
DataTable genre = ds.Tables["Genre"];
DataTable review = ds.Tables["Review"];
// tạo và thực thi truy vấn LINQ to Dataset
var query = from d in genre.AsEnumerable()
join e in review.AsEnumerable()
on d.Field<int>("ID") equals
e.Field<int> ("GenreId")
select new {
GenreID = d.Field<int>("ID"),
GenreName = d.Field<int> ("Name"),
ReviewID = e.Field<int> ("ID"),
ReviewTitle = e.Field<int>("Title")
};
// Hiển thị kết quả
foreach ( var e in query ){
Console.WriteLine("Genre Id = {0} , Name = {1} , Title = {2}",
e.GenreID, e.GenreName, e.ReviewTitle);
}
}
}