Using ToTable Function to Create Unique / Distinct Record in DataTable

Posted at : Jun/09/2007
5549 Views

Untuk mengambil data unique / distinct selain dengan menggunakan perintah Distinct di SQL statement yang di embed via DataAdapter atau Command object terdapat cara lain yang bisa menggantikan teknik tersebut. Misalnya kita ingin data yang sudah ada di sebuah datatable ingin ditampilkan ke datatable yang lain dengan record yang unique berdasarkan kolom tertentu.

DataTable mempunyai built-in DataView yang bisa langsung diakses tanpa perlu membuat sebuah variabel yang terpisahterlebih dahulu untuk membuat dataview nya. Built-in function tersebut yaitu DefaultView. Nah dari DefaultView tsb kita dapat menggunakan fungsi ToTable yang dapat melakukan filtering record berdasarkan kolom tertentu secara unique ke datatable yang lainnya.

Saya akan membuat contoh sederhana untuk menjelaskan teknik tsb. Misalkan saya punya sebuah form dengan control DataGridView yang menampilkan data CompanyName,Country dari tabel Customers database Northwind dan sebuah Button yang akan melakukan filtering record secara unique dari kolom Country ke datatable baru yang nantinya akan ditampilkan di ListView. Ok...dari pada berpanjang lebar mari kita lihat code nya saja langsung :)

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;

namespace ADONetApp
{
public partial class Form1 : Form {
public Form1()
{
InitializeComponent();
}

DataTable dtCustomers;
const string constString = @"Database=Northwind;Server=.\SQL2000;Uid=sa;Pwd=";

SqlConnection sqlConn = new SqlConnection(constString);

private void GetCustomers()
{
using (SqlCommand sqlCmd = new SqlCommand())
{
sqlCmd.CommandType = CommandType.Text;
sqlCmd.Connection = sqlConn;
sqlCmd.CommandText =
"Select CompanyName,Country From Customers";

sqlConn.Open();

dtCustomers = new DataTable("customerTable");
dtCustomers.Load(sqlCmd.ExecuteReader());

dataGridView1.DataSource = dtCustomers;
}
}

private void Form1_Load(object sender, EventArgs e)
{
GetCustomers();
}

private void btnDistinct_Click(object sender, EventArgs e)
{
lvCountry.Items.Clear();

DataTable dtDistinct;

dtDistinct = dtCustomers.DefaultView.ToTable(true,
dtCustomers.Columns[1].ColumnName);

dtDistinct.DefaultView.Sort = "Country ASC";

for (int i = 0; i < dtDistinct.DefaultView.Count - 1; i++)
{
lvCountry.Items.Add(
dtDistinct.DefaultView[i].Row["Country"].ToString(),0);
}
}
}
}

Here's the screen shot :


ABOUT ME

Rully Yulian MF
Rully Yulian Muhammad Firmansyah | Co-Founder & IT Trainer at Native Enterprise | Microsoft Azure Data Scientist | IBM RAG & Agentic AI | IBM Data Science & Data Analyst | Python Certified (PCEP, PCAP) | MOS, MTA, Xamarin Certified, ex MCT | ex MVP

CERTIFICATIONS

Microsoft Certified Associate
IBM RAG and Agentic AI Professional
IBM Data Science Professional IBM Data Analyst Professional
PCAP Associate Python Programmer Certified PCEP Entry Level Python Programmer Certified
Xamarin Certified
MOS 2007
MCPD MCTS
MCAD.NET

NATIVE ENTERPRISE

Native Enterprise - IT Training

FOLLOW ME

Youtube  X Twitter Facebook  Instagram  LinkedIn

RSS


NATIVE ENTERPRISE NEWS

© Copyright 2006 - 2026   Rully Yulian MF   All rights reserved.