我有一个dataTable,其中一列是特定类型的对象,比如typeOf(A) - A是我的自定义类。 A类具有文本属性和bool等其他属性。从用户或外部代码我只得到RowFilter中用于过滤的文本值,在下面的例子中我将得到" cat"作为我的过滤器使用。使用这个如何创建RowFilterExpression?
class A
{
public string Text{get;set;}
public bool isReadonly {get;set;}
}
DataTable table = new DataTable();
table.Columns.Add("col1", typeOf(A));
table.Rows.Add(new A{Text = "cat", isReadOnly = true,})
table.Rows.Add(new A{Text = "dog", isReadOnly = false,})
string filter = "cat";
DataView dataView = new DataView(table);
dataView.RowFilter = "[col1]='"+filter+"'";
上面的表达式不起作用,因为它试图将它与单元格中的对象匹配。如何使用此过滤器表达式单独过滤掉第1行?
感谢任何帮助。
答案 0 :(得分:2)
尝试在您的对象中覆盖ToString
方法,然后您当前的过滤代码应该正常工作
class A
{
public string Text{get;set;}
public bool isReadonly {get;set;}
public override string ToString()
{
return this.Text;
}
}
答案 1 :(得分:-2)
覆盖对象ToString方法,如下所示:
class A
{
public string Text { get; set; }
public bool isReadonly { get; set; }
public override string ToString()
{
return this.Text;
}
}
你可以使用:
dataView.RowFilter = string.Format("Convert([col1], 'System.String') = '{0}'", filter);