How To Select Distinct Record From Dataset

How To Select Distinct Record From Dataset

In this blog post, I will show you how to find unique row in DataSet/DataTable
codeguru

using System;  
using System.Data;  
using System.Configuration;  
using System.Web;  
using System.Web.Security;  
using System.Web.UI;  
using System.Web.UI.WebControls;  
using System.Web.UI.WebControls.WebParts;  
using System.Web.UI.HtmlControls;  

/// <summary>  
/// Summary description for DataSetHelper  
/// </summary>  
public class DataSetHelper  
{  
public DataSet ds;  
public DataSetHelper(ref DataSet DataSet)  
{  
   ds = DataSet;  
}  
public DataSetHelper()  
{  
   ds = null;  
}  
private bool ColumnEqual(object A, object B)  
{  

   // Compares two values to see if they are equal. Also compares DBNULL.Value.  
   // Note: If your DataTable contains object fields, then you must extend this  
   // function to handle them in a meaningful way if you intend to group on them.  

   if (A == DBNull.Value && B == DBNull.Value) //  both are DBNull.Value  
       return true;  
   if (A == DBNull.Value || B == DBNull.Value) //  only one is DBNull.Value  
       return false;  
   return (A.Equals(B));  // value type standard comparison  
}  
public DataTable SelectDistinct(string TableName, DataTable SourceTable, string FieldName)  
{  
   DataTable dt = new DataTable(TableName);  
   dt.Columns.Add(FieldName, SourceTable.Columns[FieldName].DataType);  

   object LastValue = null;  
   foreach (DataRow dr in SourceTable.Select("", FieldName))  
   {  
       if (LastValue == null || !(ColumnEqual(LastValue, dr[FieldName])))  
       {  
           LastValue = dr[FieldName];  
           dt.Rows.Add(new object[] { LastValue });  
       }  
   }  
   if (ds != null)  
       ds.Tables.Add(dt);  
   return dt;  
}  


}  

Default.aspx

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Distinct.aspx.cs"  
Inherits="Distinct" %>  

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"  
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
<html xmlns="http://www.w3.org/1999/xhtml">  
<head runat="server">  
<title>Untitled Page</title>  
</head>  
<body>  
<form id="form1" runat="server">  
   <div>  
       <asp:GridView ID="GridView1" runat="Server">  
       </asp:GridView>  
   </div>  
</form>  
</body>  
</html>  

Default.aspx.cs

using System;  
using System.Data;  
using System.Configuration;  
using System.Collections;  
using System.Web;  
using System.Web.Security;  
using System.Web.UI;  
using System.Web.UI.WebControls;  
using System.Web.UI.WebControls.WebParts;  
using System.Web.UI.HtmlControls;  

public partial class Distinct : System.Web.UI.Page  
{  
protected void Page_Load(object sender, EventArgs e)  
{  
   DataSetHelper dsHelper = new DataSetHelper();  
   dsHelper.SelectDistinct("Name", GetDataSource(), "Name");  
   GridView1.DataSource = dsHelper.SelectDistinct("Name", GetDataSource(), "Name");  
   GridView1.DataBind();  




}  
protected DataTable GetDataSource()  
{  

   const string key = "MyDataSource";  
   DataTable dt = Session[key] as DataTable;  

   if (dt == null)  
   {  

       dt = new DataTable();  
       dt.Columns.Add("ID", typeof(int));  

       dt.Columns.Add("Name", typeof(string));  
       dt.Rows.Add("1", "first object");  

       dt.Rows.Add("2", "second object");  
       dt.Rows.Add("3", "second object");  
       dt.Rows.Add("4", "second object");  
       Session[key] = dt;  

   }  

   return dt;  
}  
}

Post a Comment

Please do not post any spam link in the comment box😊

Previous Post Next Post

Blog ads

CodeGuru