Наряду с применением оператора SQL к вашему SQL можно применить оператор к исходному DataTable
при создании второй таблицы, как показано ниже (с включенным модульным тестом и вспомогательными классами, которые я использовал для создания прототипа) .
Я добавил комментарий ниже, чтобы выделить строку, где применяется отличное - вы используете метод .ToTable (), который принимает логический параметр Distinct, чтобы указать только возвращаемые отличные строки.
[TestMethod]
public void CreateDistinctDataTable()
{
DataTable originalTable = CreateDataTable();
AddDataToTable("Fred", "Bloggs", originalTable);
AddDataToTable("Fred", "Bloggs", originalTable);
AddDataToTable("John", "Doe", originalTable);
// This is the key line of code where we use the .ToTable() method
DataTable distinctTable = originalTable.DefaultView.ToTable( /*distinct*/ true);
// The original table has two rows with firstname of Fred
Assert.AreEqual(2, originalTable.Select("firstname = 'Fred'").Length);
// The new table only has one row with firstname of Fred
Assert.AreEqual(1, distinctTable.Select("firstname = 'Fred'").Length);
}
private DataTable CreateDataTable()
{
DataTable myDataTable = new DataTable();
DataColumn myDataColumn;
myDataColumn = new DataColumn();
myDataColumn.DataType = Type.GetType("System.String");
myDataColumn.ColumnName = "firstname";
myDataTable.Columns.Add(myDataColumn);
myDataColumn = new DataColumn();
myDataColumn.DataType = Type.GetType("System.String");
myDataColumn.ColumnName = "lastname";
myDataTable.Columns.Add(myDataColumn);
return myDataTable;
}
private void AddDataToTable(string firstname, string lastname, DataTable myTable)
{
DataRow row = myTable.NewRow();
row["firstname"] = firstname;
row["lastname"] = lastname;
myTable.Rows.Add(row);
}
Еще одна мысль: я бы предложил не выбирать * из таблицы в выражении SQL. Это может повлиять на производительность в будущем, если будет добавлено больше столбцов (особенно таких, как BLOB-объекты), а также может означать, что вы получите столбцы, которые нарушают характер вашего запроса.