0

我有一个对象列表。我的课程如下所示:

    class Line
    {
    public string A { get; set; }
    public object B { get; set; }
    public string C { get; set; }
    }

class More_B
{
    public Information Information { get { return _Information; }}
    public Description Description { get { return _Description ; }}

    private Information  _Information  = new Information();
    private Description  _Description  = new Description ();
}

class Information
{
    public string Name { get; set;}
    public string Type { get; set;}
    public string Further_Info { get; set;}
}

最后在我的主课中,我得到了Line像这样的类内的所有数据。

More_B info = new More_B();

 Line main = new Line();
 main.A = "Information about device";
 main.B = info;
 main.C = "Some more information could be display here";
 list3.Add(main);

所以最后我得到了列表,里面有所有 3 个字段A B C。当我在调试模式下检查时,我有我的字符串值,A我有 Information 对象,在其中我有所有字段,如and 。CBName TypeFurther_Info

我稍后想根据这些值“名称”“类型”和“Further_Info”过滤此列,我尝试过这种方式,但它不起作用。(我将我的列表绑定到 DataView 以便能够使用 RowFilter)。

view2.RowFilter = "Line like '%" + textBox2.Text + "%'";

我怎样才能做到正确?

我是 C# 的新手,所以如果我做错了什么,请原谅我。如果有些东西难以理解,请告诉我,我会尝试发布更多代码来解释我所做的事情。

编辑:当我使用这个语句时view2.RowFilter = "Line like '%" + textBox2.Text + "%'";,我得到了错误Cannot perform 'Like' operation on read_display.More_B and System.String.

EDIT2:我还有 2 种方法可以为我的班级创建数据表,然后我这样做:DataTable ListAsDataTable2 = BuildDataTable2<Line>(list3); DataView ListAsDataView2 = ListAsDataTable2.DefaultView; this.dataGridView4.DataSource = view2 = ListAsDataView2;

4

2 回答 2

3

以这种方式尝试:

public class Line
{
   public string A {get;set;}
   public More_B B {get;set;}
   public string C {get;set;}         

}

public class Information
{
   public string Name { get; set;}
   public string Type { get; set;}
   public string Further_Info { get; set;}
}

public class More_B:Information
{
   public string CusotmField {get;set;}
}

var B_Object = new More_B (Name = "The B", Type = "Some type", Further_Info = "More Info");
IList<More_B> B_List=new List<More_B>();
var searchObj = B_List.Where(x => x.Name=="The B").FirstOrDefault();
于 2013-08-08T10:07:31.757 回答
0

我认为 RowFilter 有错误。由于 Line 不是列,因此不应在 Filter 中使用它。可能您正在寻找这样的东西:

view2.RowFilter = "Name like '%" + textBox2.Text + "%' OR Type like '%" + textBox2.Text + "%' OR Further_Info like '%" + textBox2.Text + "%' "
于 2013-08-08T10:08:12.823 回答