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 + "'")
让颜色和索引公开,这样你就可以得到价值。惊人的答案非常感谢它解决了我的问题