I needed to perform a “Select Distinct“ on a datatable, not in the database, for binding to a listbox. Found a good solution here. Modified it according to one of the comments to use a hash table so sort order won’t matter. Here is my version of the function:
 
private DataTable SelectDistinct(DataTable sourceTable, string sourceColumn)
{
    DataTable result = null;
    try
    {
        result = new DataTable();
        result.Columns.Add(sourceColumn, sourceTable.Columns[sourceColumn].DataType);
        Hashtable ht = new Hashtable();
        foreach (DataRow dr in sourceTable.Rows)
        {
            if (!ht.ContainsKey(dr[sourceColumn]))
            {
                ht.Add(dr[sourceColumn], null);
                DataRow newRow = result.NewRow();
                newRow[sourceColumn] = dr[sourceColumn];
                result.Rows.Add(newRow);
            }
        }
        return result;
    }
    catch (System.Exception ex)
    {
        ExceptionManager.Publish(ex);
        return null;
    }
    finally
    {
        if (result != null)
            result.Dispose();
    }
}