Как выбрать различные строки в datatable и хранить в массиве

У меня есть dataset. objds содержит таблицу с именем Table1. Таблица 1 содержит столбец с именем ProcessName. Это имя процесса содержит повторяющиеся имена. Поэтому я хочу выбрать только отдельные имена. Это возможно.

intUniqId[i] = (objds.Tables[0].Rows[i]["ProcessName"].ToString()); 

 DataView view = new DataView(table); DataTable distinctValues = view.ToTable(true, "Column1", "Column2" ...); 

Следующая строка кода позволит избежать дублирования строк DataTable :

 dataTable.DefaultView.ToTable(true, "employeeid"); 

Где:

  • первый параметр в ToTable() – это логическое значение, указывающее, хотите ли вы отдельные строки или нет.

  • второй параметр в ToTable() – это имя столбца, на основе которого мы должны выбирать разные строки. Только эти столбцы будут в возвращаемом datatable.

То же самое можно сделать с помощью DataSet , DataSet к определенному DataTable :

 dataSet.Tables["Employee"].DefaultView.ToTable(true, "employeeid"); 
 DataTable dt = new DataTable(); dt.Columns.Add("IntValue", typeof(int)); dt.Columns.Add("StringValue", typeof(string)); dt.Rows.Add(1, "1"); dt.Rows.Add(1, "1"); dt.Rows.Add(1, "1"); dt.Rows.Add(2, "2"); dt.Rows.Add(2, "2"); var x = (from r in dt.AsEnumerable() select r["IntValue"]).Distinct().ToList(); 

С LINQ (.NET 3.5, C # 3)

 var distinctNames = ( from row in DataTable.AsEnumerable() select row.Field("Name")).Distinct(); foreach (var name in distinctNames ) { Console.WriteLine(name); } 

Вы можете использовать так:

dataDataTable

 data.DefaultView.ToTable(true, "Id", "Name", "Role", "DC1", "DC2", "DC3", "DC4", "DC5", "DC6", "DC7"); 

но производительность будет снижена. попробуйте использовать ниже код:

 data.AsEnumerable().Distinct(System.Data.DataRowComparer.Default).ToList(); 

Для исполнения; http://onerkaya.blogspot.com/2013/01/distinct-dataviewtotable-vs-linq.html

 var distinctRows = (from DataRow dRow in dtInventory.Rows select dRow["column_name"] ).Distinct(); var distinctRows = (from DataRow dRow in dtInventory.Rows select dRow["col1"], dRow["col2"].. ).Distinct(); 

Чтобы улучшить приведенный выше ответ: функция ToTable в dataview имеет «отличный» флаг.

 //This will filter all records to be distinct dt = dt.DefaultView.ToTable(true); 

Следующие работы. У меня он работает для меня с .NET 3.5 SP1

 // Create the list of columns String[] szColumns = new String[data.Columns.Count]; for (int index = 0; index < data.Columns.Count; index++) { szColumns[index] = data.Columns[index].ColumnName; } // Get the distinct records data = data.DefaultView.ToTable(true, szColumns); 
 string[] TobeDistinct = {"Name","City","State"}; DataTable dtDistinct = GetDistinctRecords(DTwithDuplicate, TobeDistinct); //Following function will return Distinct records for Name, City and State column. public static DataTable GetDistinctRecords(DataTable dt, string[] Columns) { DataTable dtUniqRecords = new DataTable(); dtUniqRecords = dt.DefaultView.ToTable(true, Columns); return dtUniqRecords; } 

Мне просто удалось найти это: http://support.microsoft.com/default.aspx?scid=kb;en-us;326176#1

При поиске чего-то подобного, только, специально для .net 2.0

Im, предполагая, что OP ищет отличия при использовании DataTable.Select (). (Select () не поддерживает отдельные)

Итак, вот код из приведенной выше ссылки:

 class DataTableHelper { 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}); } } return dt; } 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 } } 
 var ValuetoReturn = (from Rows in YourDataTable.AsEnumerable() select Rows["ColumnName"]).Distinct().ToList(); 
 DataTable dt = new DataTable("EMPLOYEE_LIST"); DataColumn eeCode = dt.Columns.Add("EMPLOYEE_CODE", typeof(String)); DataColumn taxYear = dt.Columns.Add("TAX_YEAR", typeof(String)); DataColumn intData = dt.Columns.Add("INT_DATA", typeof(int)); DataColumn textData = dt.Columns.Add("TEXT_DATA", typeof(String)); dt.PrimaryKey = new DataColumn[] { eeCode, taxYear }; 

Он фильтрует таблицу данных с eecode и taxyear, которые в совокупности считаются уникальными

Синтаксис:-

 DataTable dt = ds.Tables[0].DefaultView.ToTable(true, "ColumnName"); 

EX: –

 DataTable uniqueCols = dsUDFlable.Tables[0].DefaultView.ToTable(true, "BorrowerLabelName"); 

Наиболее простым решением является использование linq, а затем преобразование результата в DataTable

  //data is a DataTable that you want to change DataTable result = data.AsEnumerable().Distinct().CopyToDataTable < DataRow > (); 

Это справедливо для asp.net 4.0 ^ Framework, если я помню.

Это просто

  DataView view = new DataView(dt); DataTable dt2 = view.ToTable(true, "Column1", "Column2","Column3", ...,"ColumnNth"); 

и dt2 datatable содержат столбец1, Column2..ColumnNth уникальные данные.

как?

SELECT DISTINCT …. FROM table WHERE условие

http://www.felixgers.de/teaching/sql/sql_distinct.html

Примечание: вопрос о домашнем задании? и бог благословит Google.

http://www.google.com/search?hl=en&rlz=1C1GGLS_enJO330JO333&q=c%23+selecting+distinct+values+from+table&aq=f&oq=&aqi=

 DataTable dtbs = new DataTable(); DataView dvbs = new DataView(dt); dvbs.RowFilter = "ColumnName='Filtervalue'"; dtbs = dvbs.ToTable(); 
  • MySQL SELECT LIKE или REGEXP для сопоставления нескольких слов в одной записи
  • выбрать счетчик приращений в mysql
  • Выделить все столбцы, кроме одного в MySQL?
  • Как работает ORDER BY RAND () MySQL?
  • Mysql выбирает различные
  • Событие Click на элементе выбора опции в хроме
  • Можно ли настроить UITableView для разрешения множественного выбора?
  • Выберите NA в таблице данных в R
  • mySQL возвращает все строки, когда поле = 0
  • Сортировка по порядку значений в предложении select в разделе «in» в mysql
  • jQuery получить значение select onChange
  • Давайте будем гением компьютера.