DataView Rowfilter Выражение C#

У меня есть dataTable, в котором один из столбцов имеет определенный тип объекта say typeOf(A) — будучи моим пользовательским классом. Класс A имеет свойство text и другие свойства, такие как 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-ю строку с помощью этого выражения фильтра?

Любая помощь ценится.

2 ответа

  1. Попробуйте переопределить ToStringметод в объекте, и тогда будет работать текущий код фильтрации

    class A
    {
       public string Text{get;set;}
       public bool isReadonly {get;set;}
    
       public override string ToString()
       {
          return this.Text;
       }
    } 
    
  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);