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

时间:2019-08-17 08:55:29

标签: c# winforms datatable

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

FieldValue.serverTimestamp()

所以我可以查询吗

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));

2 个答案:

答案 0 :(得分:1)

DataTable.Select(string)方法无法搜索任意类型。

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

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

然后在搜索时使用Convert函数:

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

答案 1 :(得分:0)

您可以这样做:

DataRow[] _queried = dataTable.Select(t => t.Color == greenOne.Color && t.Index == greenOne.Index);