DataTable.Select
поддерживает выражения столбца синтаксис, включая функцию CONVERT
. Оказывается, CONVERT
работает и для столбцов типа System.Drawing.Color
.
Примерно так должно работать:
DataRow[] queried = table.Select("CONVERT(ColorColumn, System.String) = 'Color [Red]'");
или, если вы хотите передать Color
в качестве переменной:
var filterColor = Color.Red;
var queried = table.Select($"CONVERT(ColorColumn, System.String) = '{filterColor}'");
Пример выполнения:
using System;
using System.Data;
using System.Drawing;
using System.Linq;
class Program
{
private static void Main()
{
var table = new DataTable();
table.Columns.Add(new DataColumn("Name", typeof(string)));
table.Columns.Add(new DataColumn("Color", typeof(Color)));
table.Rows.Add("First", Color.Red);
table.Rows.Add("Second", Color.DarkRed);
table.Rows.Add("Third", Color.Green);
table.Rows.Add("Fourth", Color.Red);
table.Rows.Add("Fifth", Color.Yellow);
var filterColor = Color.Red;
var queried = table.Select($"CONVERT(Color, System.String) = '{filterColor}'");
//First, Fourth
Console.WriteLine(string.Join(",", queried.Select(r => r["Name"])));
Console.Read();
}
}