Я использую класс, который содержит значение цвета и значение индекса и с помощью которого я формирую столбец

Class ColorWithIndex 
{ 
   System.Drawing.Color Color; 
   Int Index;

   public ColorWithIndex(System.Drawing.Color color, Int index)
   {
       Color = color;
       Index = index;
   }
} 

DataTable dataTable = New DataTable(); 

dataTable.Columns.Add("ColorColumn", typeOf(ColorWithIndex));

dataTable.Rows.Add(new ColorWithIndex(Color.Red, 1));
dataTable.Rows.Add(new ColorWithIndex(Color.Green, 2));
dataTable.Rows.Add(new ColorWithIndex(Color.Blue, 3));

Так что я могу иметь запрос, как.

ColorWithIndex greenOne = new ColorWithIndex(Color.Green, 2);

DataRow[] _queried = dataTable.Select("ColorColumn = " + greenOne);
0
Garuda prasad K 17 Авг 2019 в 11:55

2 ответа

Лучший ответ

DataTable.Select ( string) метод не может искать произвольные типы.

Реализуйте метод ToString в классе ColorWithIndex. Например:

public override string ToString()
{
    return Color.Name + " " + Index;
}

Затем используйте функцию Convert при поиске:

dataTable.Select("CONVERT(ColorColumn, System.String) = '" + greenOne + "'")
1
Alexander Petrov 17 Авг 2019 в 12:06

Вы могли сделать:

DataRow[] _queried = dataTable.Select(t => t.Color == greenOne.Color && t.Index == greenOne.Index);
0
skymon 17 Авг 2019 в 09:08