Member 14089908 Ответов: 1

C# удалить повторяющиеся значения ячеек datatable


Привет,
У меня есть datatable, как у Беллоу.

NoReg |Emresa  |Caracteristicas	        |Origen	     |Destino
3	  |INFOTEP |MINIBUS  CONFORTABLE    |LA VEGA	 |PUERTO PLATA
3	  |INFOTEP |MUSICA  TELEVISOR  WIFI |MAO	     |SANTO DOMINGO OESTE
3	  |INFOTEP |MUSICA  TELEVISOR  WIFI |MONTECRISTI |SANTIAGO DE LOS CABALLEROS
3	  |INFOTEP |MUSICA  TELEVISOR  WIFI |LA VEGA	 |SANTO DOMINGO NORTE


Но я хочу, чтобы все было именно так.

NoReg |Emresa  |Caracteristicas	        |Origen	     |Destino
3	  |INFOTEP |MINIBUS  CONFORTABLE    |LA VEGA	 |PUERTO PLATA
3	  |INFOTEP | 			            |MAO	     |SANTO DOMINGO OESTE
3	  |INFOTEP |MUSICA  TELEVISOR  WIFI |MONTECRISTI |SANTIAGO DE LOS CABALLEROS
3	  |INFOTEP |			            |LA VEGA	 |SANTO DOMINGO NORTE

Я хочу удалить повторяющиеся значения в Caracteristicas колонка так и хочется поглощать оно.
Я новичок в C# и не знаю, как этого добиться.
Любая помощь будет очень признательна.
Заранее спасибо.

Что я уже пробовал:

DataSet ds = ReceiptDataDAL.GetData(val);
                DataTable dtResult = ds.Tables[0].Copy();
                DataTable dt = new DataTable();
                DataColumn dc = new DataColumn("col1", typeof(String));
                dt.Columns.Add(dc);
                // var dt1 = ds.Tables[0].AsEnumerable()
                //.Select(g => g.Field<string>("Caracteristicas")).Distinct().OrderBy(k => k).ToArray();
                var distinctRows = ds.Tables[0].AsEnumerable()
               .Select(g => g.Field<string>("Caracteristicas")).Distinct().OrderBy(k => k).ToArray();
                DataRow dr = dt.NewRow();
                
                foreach (string name in distinctRows)
                {
                    int i = 0;
                    var rows = ds.Tables[0].Select("Caracteristicas = '" + name + "'");
                    string value = "";
                    foreach (DataRow row in rows)
                    {
                        value += row["Caracteristicas"] + "\n";
                    }
                    value = value.Trim(',');
                    dr[0] = value;
                    dt.Rows.Add(value);
                    dt.Rows.InsertAt(dr,0);
                    value = "";
                    i++;
                }

                var output = dtResult;

1 Ответов

Рейтинг:
0

Christian Graus

Если вы получаете данные из базы данных, используйте DISTINCT. В противном случае просто создайте свой источник данных в виде списка, используя LINQ и Distinct.

Перечислимый.Самостоятельного Метода (Системы.По LINQ) | Майкрософт Документы[^]


Member 14089908

@Chritian спасибо вам за ваш комментарий. Как я уже сказал, Я новичок в C#, поэтому, пожалуйста, поделитесь образцом кода, если у вас есть.
Спасибо!