如何对 DataTable 执行 SELECT DISTINCT

如何对 DataTable 执行 SELECT DISTINCT在ADO.NET1.x&2.0中,System.Data.DataTable类虽然公开Select方法,但不支持DISTINCT关键字,而我们在实际开发中免不了有这样的需求:对已有DataTable进行SELECT DISTINCT ,返回指定列具有唯一值的行,这些行存在新的DataTable中。对于此问题,很早就有人提出来了,大家也做了很多尝试。看到CSDN

在 ADO.NET 1.x & 2.0 中, System.Data.DataTable 类虽然公开 Select 方法,但不支持 DISTINCT 关键字,而我们在实际开发中免不了有这样的需求:对已有 DataTable 进行 SELECT  DISTINCT ,返回指定列具有唯一值的行,这些行存在新的 DataTable 中。

对于此问题,很早就有人提出来了,大家也做了很多尝试。

看到 CSDN 中常有人有此疑问,这里再次总结下,便于参阅。

ADO.NET 1.x

对于此版本,没有任何捷径,只有自己手工实现,这里收集两个比较常用的方法:

Select DISTINCT on DataTable


http://weblogs.asp.net/eporter/archive/2005/02/10/370548.aspx

HOWTO: VisualC # .NET 中实现 DataSet SELECTDISTINCT Helper 类


http://support.microsoft.com/kb/326176/zh-cn

推荐方法1,此实现更具性能比。


ADO.NET 2.0

对于此版本,  虽然 DataTable.Select 方法依然不支持 DISTINCT ,但是与 DataTable 密切相关的 DataView 类实现了几个重载版本的 ToDataTable  方法,根据现有 DataView 中的行,创建并返回一个新的 DataTable。

其中

public DataTable ToTable (
 bool distinct,
 params string[] columnNames
)





public DataTable ToTable (
 string tableName,
 bool distinct,
 params string[] columnNames
)
支持 distinct 指示是否对 columnNames 内所有列进行 DISTINCT 操作。







如何对 DataTable 执行 SELECT DISTINCT private   static   void  DemonstrateDataView()
如何对 DataTable 执行 SELECT DISTINCT如何对 DataTable 执行 SELECT DISTINCT
{
如何对 DataTable 执行 SELECT DISTINCT    
// Create a DataTable with three columns.
如何对 DataTable 执行 SELECT DISTINCT
    DataTable table = new DataTable("NewTable");
如何对 DataTable 执行 SELECT DISTINCT    Console.WriteLine(
"Original table name: " + table.TableName);
如何对 DataTable 执行 SELECT DISTINCT    DataColumn column 
= new DataColumn("ID"typeof(System.Int32));
如何对 DataTable 执行 SELECT DISTINCT    table.Columns.Add(column);
如何对 DataTable 执行 SELECT DISTINCT
如何对 DataTable 执行 SELECT DISTINCT    column 
= new DataColumn("Category"typeof(System.String));
如何对 DataTable 执行 SELECT DISTINCT    table.Columns.Add(column);
如何对 DataTable 执行 SELECT DISTINCT
如何对 DataTable 执行 SELECT DISTINCT    column 
= new DataColumn("Product"typeof(System.String));
如何对 DataTable 执行 SELECT DISTINCT    table.Columns.Add(column);
如何对 DataTable 执行 SELECT DISTINCT
如何对 DataTable 执行 SELECT DISTINCT    column 
= new DataColumn("QuantityInStock"typeof(System.Int32));
如何对 DataTable 执行 SELECT DISTINCT    table.Columns.Add(column);
如何对 DataTable 执行 SELECT DISTINCT
如何对 DataTable 执行 SELECT DISTINCT    
// Add some items.
如何对 DataTable 执行 SELECT DISTINCT
    DataRow row = table.NewRow();
如何对 DataTable 执行 SELECT DISTINCT如何对 DataTable 执行 SELECT DISTINCT    row.ItemArray 
= new object[] 1"Fruit""Apple"14 };
如何对 DataTable 执行 SELECT DISTINCT    table.Rows.Add(row);
如何对 DataTable 执行 SELECT DISTINCT
如何对 DataTable 执行 SELECT DISTINCT    row 
= table.NewRow();
如何对 DataTable 执行 SELECT DISTINCT如何对 DataTable 执行 SELECT DISTINCT    row.ItemArray 
= new object[] 2"Fruit""Orange"27 };
如何对 DataTable 执行 SELECT DISTINCT    table.Rows.Add(row);
如何对 DataTable 执行 SELECT DISTINCT
如何对 DataTable 执行 SELECT DISTINCT    row 
= table.NewRow();
如何对 DataTable 执行 SELECT DISTINCT如何对 DataTable 执行 SELECT DISTINCT    row.ItemArray 
= new object[] 3"Bread""Muffin"23 };
如何对 DataTable 执行 SELECT DISTINCT    table.Rows.Add(row);
如何对 DataTable 执行 SELECT DISTINCT
如何对 DataTable 执行 SELECT DISTINCT    row 
= table.NewRow();
如何对 DataTable 执行 SELECT DISTINCT如何对 DataTable 执行 SELECT DISTINCT    row.ItemArray 
= new object[] 4"Fish""Salmon"12 };
如何对 DataTable 执行 SELECT DISTINCT    table.Rows.Add(row);
如何对 DataTable 执行 SELECT DISTINCT
如何对 DataTable 执行 SELECT DISTINCT    row 
= table.NewRow();
如何对 DataTable 执行 SELECT DISTINCT如何对 DataTable 执行 SELECT DISTINCT    row.ItemArray 
= new object[] 5"Fish""Salmon"15 };
如何对 DataTable 执行 SELECT DISTINCT    table.Rows.Add(row);
如何对 DataTable 执行 SELECT DISTINCT
如何对 DataTable 执行 SELECT DISTINCT    row 
= table.NewRow();
如何对 DataTable 执行 SELECT DISTINCT如何对 DataTable 执行 SELECT DISTINCT    row.ItemArray 
= new object[] 6"Bread""Croissant"23};
如何对 DataTable 执行 SELECT DISTINCT    table.Rows.Add(row);
如何对 DataTable 执行 SELECT DISTINCT
如何对 DataTable 执行 SELECT DISTINCT    
// Mark all rows as "accepted". Not required
如何对 DataTable 执行 SELECT DISTINCT    
// for this particular example.
如何对 DataTable 执行 SELECT DISTINCT
    table.AcceptChanges();
如何对 DataTable 执行 SELECT DISTINCT
如何对 DataTable 执行 SELECT DISTINCT    
// Print current table values.
如何对 DataTable 执行 SELECT DISTINCT
    PrintTableOrView(table, "Current Values in Table");
如何对 DataTable 执行 SELECT DISTINCT
如何对 DataTable 执行 SELECT DISTINCT    DataView view 
= new DataView(table);
如何对 DataTable 执行 SELECT DISTINCT    view.Sort 
= "Category";
如何对 DataTable 执行 SELECT DISTINCT    PrintTableOrView(view, 
"Current Values in View");
如何对 DataTable 执行 SELECT DISTINCT
如何对 DataTable 执行 SELECT DISTINCT    DataTable newTable 
= view.ToTable("UniqueData"true
如何对 DataTable 执行 SELECT DISTINCT        
"Category""QuantityInStock");
如何对 DataTable 执行 SELECT DISTINCT    PrintTableOrView(newTable, 
"Table created from sorted DataView");
如何对 DataTable 执行 SELECT DISTINCT    Console.WriteLine(
"New table name: " + newTable.TableName);
如何对 DataTable 执行 SELECT DISTINCT
如何对 DataTable 执行 SELECT DISTINCT    Console.WriteLine(
"Press any key to continue.");
如何对 DataTable 执行 SELECT DISTINCT    Console.ReadKey();
如何对 DataTable 执行 SELECT DISTINCT}

如何对 DataTable 执行 SELECT DISTINCT
如何对 DataTable 执行 SELECT DISTINCT
private   static   void  PrintTableOrView(DataView dv,  string  label)
如何对 DataTable 执行 SELECT DISTINCT如何对 DataTable 执行 SELECT DISTINCT
{
如何对 DataTable 执行 SELECT DISTINCT    System.IO.StringWriter sw;
如何对 DataTable 执行 SELECT DISTINCT    
string output;
如何对 DataTable 执行 SELECT DISTINCT    DataTable table 
= dv.Table;
如何对 DataTable 执行 SELECT DISTINCT
如何对 DataTable 执行 SELECT DISTINCT    Console.WriteLine(label);
如何对 DataTable 执行 SELECT DISTINCT
如何对 DataTable 执行 SELECT DISTINCT    
// Loop through each row in the view.
如何对 DataTable 执行 SELECT DISTINCT
    foreach (DataRowView rowView in dv)
如何对 DataTable 执行 SELECT DISTINCT如何对 DataTable 执行 SELECT DISTINCT    
{
如何对 DataTable 执行 SELECT DISTINCT        sw 
= new System.IO.StringWriter();
如何对 DataTable 执行 SELECT DISTINCT
如何对 DataTable 执行 SELECT DISTINCT        
// Loop through each column.
如何对 DataTable 执行 SELECT DISTINCT
        foreach (DataColumn col in table.Columns)
如何对 DataTable 执行 SELECT DISTINCT如何对 DataTable 执行 SELECT DISTINCT        
{
如何对 DataTable 执行 SELECT DISTINCT            
// Output the value of each column's data.
如何对 DataTable 执行 SELECT DISTINCT
            sw.Write(rowView[col.ColumnName].ToString() + "");
如何对 DataTable 执行 SELECT DISTINCT        }

如何对 DataTable 执行 SELECT DISTINCT        output 
= sw.ToString();
如何对 DataTable 执行 SELECT DISTINCT        
// Trim off the trailing ", ", so the output looks correct.
如何对 DataTable 执行 SELECT DISTINCT
        if (output.Length > 2)
如何对 DataTable 执行 SELECT DISTINCT如何对 DataTable 执行 SELECT DISTINCT        
{
如何对 DataTable 执行 SELECT DISTINCT            output 
= output.Substring(0, output.Length - 2);
如何对 DataTable 执行 SELECT DISTINCT        }

如何对 DataTable 执行 SELECT DISTINCT        
// Display the row in the console window.
如何对 DataTable 执行 SELECT DISTINCT
        Console.WriteLine(output);
如何对 DataTable 执行 SELECT DISTINCT    }

如何对 DataTable 执行 SELECT DISTINCT    Console.WriteLine();
如何对 DataTable 执行 SELECT DISTINCT}

如何对 DataTable 执行 SELECT DISTINCT
如何对 DataTable 执行 SELECT DISTINCT
private   static   void  PrintTableOrView(DataTable table,  string  label)
如何对 DataTable 执行 SELECT DISTINCT如何对 DataTable 执行 SELECT DISTINCT
{
如何对 DataTable 执行 SELECT DISTINCT    System.IO.StringWriter sw;
如何对 DataTable 执行 SELECT DISTINCT    
string output;
如何对 DataTable 执行 SELECT DISTINCT
如何对 DataTable 执行 SELECT DISTINCT    Console.WriteLine(label);
如何对 DataTable 执行 SELECT DISTINCT
如何对 DataTable 执行 SELECT DISTINCT    
// Loop through each row in the table.
如何对 DataTable 执行 SELECT DISTINCT
    foreach (DataRow row in table.Rows)
如何对 DataTable 执行 SELECT DISTINCT如何对 DataTable 执行 SELECT DISTINCT    
{
如何对 DataTable 执行 SELECT DISTINCT        sw 
= new System.IO.StringWriter();
如何对 DataTable 执行 SELECT DISTINCT        
// Loop through each column.
如何对 DataTable 执行 SELECT DISTINCT
        foreach (DataColumn col in table.Columns)
如何对 DataTable 执行 SELECT DISTINCT如何对 DataTable 执行 SELECT DISTINCT        
{
如何对 DataTable 执行 SELECT DISTINCT            
// Output the value of each column's data.
如何对 DataTable 执行 SELECT DISTINCT
            sw.Write(row[col].ToString() + "");
如何对 DataTable 执行 SELECT DISTINCT        }

如何对 DataTable 执行 SELECT DISTINCT        output 
= sw.ToString();
如何对 DataTable 执行 SELECT DISTINCT        
// Trim off the trailing ", ", so the output looks correct.
如何对 DataTable 执行 SELECT DISTINCT
        if (output.Length > 2)
如何对 DataTable 执行 SELECT DISTINCT如何对 DataTable 执行 SELECT DISTINCT        
{
如何对 DataTable 执行 SELECT DISTINCT            output 
= output.Substring(0, output.Length - 2);
如何对 DataTable 执行 SELECT DISTINCT        }

如何对 DataTable 执行 SELECT DISTINCT        
// Display the row in the console window.
如何对 DataTable 执行 SELECT DISTINCT
        Console.WriteLine(output);
如何对 DataTable 执行 SELECT DISTINCT    }
 //
如何对 DataTable 执行 SELECT DISTINCT
    Console.WriteLine();
如何对 DataTable 执行 SELECT DISTINCT}

 今天的文章如何对 DataTable 执行 SELECT DISTINCT分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/29428.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注