Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何为该C中特定元素的自定义类类型的列执行DataTable.Select()#_C#_Winforms_Datatable - Fatal编程技术网

C# 如何为该C中特定元素的自定义类类型的列执行DataTable.Select()#

C# 如何为该C中特定元素的自定义类类型的列执行DataTable.Select()#,c#,winforms,datatable,C#,Winforms,Datatable,我正在使用一个类,它包含一个颜色值和一个索引值,并以此形成一列 Class ColorWithIndex { System.Drawing.Color Color; Int Index; public ColorWithIndex(System.Drawing.Color color, Int index) { Color = color; Index = index; } } DataTable dataTable = Ne

我正在使用一个类,它包含一个颜色值和一个索引值,并以此形成一列

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);
你可以做:

DataRow[] _queried = dataTable.Select(t => t.Color == greenOne.Color && t.Index == greenOne.Index);
方法无法搜索任意类型

ColorWithIndex
类中实现
ToString
方法。例如:

public override string ToString()
{
    return Color.Name + " " + Index;
}
然后在搜索时使用转换功能:

dataTable.Select("CONVERT(ColorColumn, System.String) = '" + greenOne + "'")

让颜色和索引公开,这样你就可以得到价值。惊人的答案非常感谢它解决了我的问题