DataSet 관련 연산자 예제(LINQ to DataSet)
업데이트: November 2007
이 항목의 예제에서는 CopyToDataTable 메서드와 DataRowComparer 클래스를 사용하는 방법을 보여 줍니다.
이러한 예제에 사용된 FillDataSet 메서드에 대한 자세한 내용은 DataSet에 데이터 로드를 참조하십시오.
이 항목의 예제에서는 AdventureWorks 샘플 데이터베이스의 Contact, Address, Product, SalesOrderHeader 및 SalesOrderDetail 테이블을 사용합니다.
이 항목의 예제에서는 다음과 같은 using/Imports 문을 사용합니다.
Option Explicit On
Imports System
Imports System.Linq
Imports System.Linq.Expressions
Imports System.Collections.Generic
Imports System.Data
Imports System.Data.SqlClient
Imports System.Data.Common
Imports System.Globalization
using System;
using System.Linq;
using System.Linq.Expressions;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Data.Common;
using System.Globalization;
자세한 내용은 방법: Visual Studio에서 LINQ to DataSet 프로젝트 만들기를 참조하십시오.
CopyToDataTable
예제
이 예제에서는 CopyToDataTable 메서드를 사용하여 쿼리 결과가 있는 DataTable을 로드합니다.
' Fill the DataSet.
Dim ds As New DataSet()
ds.Locale = CultureInfo.InvariantCulture
' See the FillDataSet method in the Loading Data Into a DataSet topic.
FillDataSet(ds)
Dim contactTable As DataTable = ds.Tables("Contact")
Dim query = _
From contact In contactTable.AsEnumerable() _
Where contact.Field(Of String)("Title") = "Ms." _
And contact.Field(Of String)("FirstName") = "Carla" _
Select contact
Dim contacts = query.CopyToDataTable().AsEnumerable()
For Each contact In contacts
Console.Write("ID: " & contact.Field(Of Integer)("ContactID"))
Console.WriteLine(" Name: " & contact.Field(Of String)("LastName") & _
", " & contact.Field(Of String)("FirstName"))
Next
// Fill the DataSet.
DataSet ds = new DataSet();
ds.Locale = CultureInfo.InvariantCulture;
FillDataSet(ds);
DataTable contacts1 = ds.Tables["Contact"];
IEnumerable<DataRow> query =
from contact in contacts1.AsEnumerable()
where contact.Field<string>("Title") == "Ms."
&& contact.Field<string>("FirstName") == "Carla"
select contact;
DataTable contacts2 = query.CopyToDataTable();
foreach (DataRow contact in contacts2.AsEnumerable())
{
Console.WriteLine("ID:{0} Name: {1}, {2}",
contact.Field<Int32>("ContactID"),
contact.Field<string>("LastName"),
contact.Field<string>("FirstName"));
}
DataRowComparer
예제
이 예제에서는 DataRowComparer를 사용하여 서로 다른 두 데이터 행을 비교합니다.
// Fill the DataSet.
DataSet ds = new DataSet();
ds.Locale = CultureInfo.InvariantCulture;
FillDataSet(ds);
// Get two rows from the SalesOrderHeader table.
DataTable table = ds.Tables["SalesOrderHeader"];
DataRow left = (DataRow)table.Rows[0];
DataRow right = (DataRow)table.Rows[1];
// Compare the two different rows.
IEqualityComparer<DataRow> comparer = DataRowComparer.Default;
bool bEqual = comparer.Equals(left, right);
if (bEqual)
Console.WriteLine("The two rows are equal");
else
Console.WriteLine("The two rows are not equal");
// Get the hash codes of the two rows.
Console.WriteLine("The hashcodes for the two rows are {0}, {1}",
comparer.GetHashCode(left),
comparer.GetHashCode(right));