【问题标题】:How to execute DataTable.Select() for a column of custom class type for a particular element in that C#如何为该 C# 中特定元素的自定义类类型列执行 DataTable.Select()
【发布时间】:2019-08-17 08:55:29
【问题描述】:

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

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

【问题讨论】:

  • 公开颜色和索引,以便您获得价值。

标签: c# winforms datatable


【解决方案1】:

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

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

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

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

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

【讨论】:

  • 惊人的答案非常感谢它解决了我的问题
【解决方案2】:

你可以这样做:

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

【讨论】:

    猜你喜欢
    • 2019-11-13
    • 2012-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-30
    相关资源
    最近更新 更多