c#通用列表过滤器

时间:2013-08-08 09:49:48

标签: c# winforms

我有一个对象列表。我的课程看起来像这样:

    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。我在AC以及B中有我的字符串值,当我检查调试模式时,我有信息对象,在其中我有所有字段,如Name {{ 1}}和Type

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

Further_Info

我该怎么做?

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

编辑:当我使用此语句view2.RowFilter = "Line like '%" + textBox2.Text + "%'"; 时,我收到错误view2.RowFilter = "Line like '%" + textBox2.Text + "%'";

EDIT2:我还有两种方法可以为我的类创建数据表,然后我这样做:Cannot perform 'Like' operation on read_display.More_B and System.String.

2 个答案:

答案 0 :(得分: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();

答案 1 :(得分:0)

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

view2.RowFilter = "Name like '%" + textBox2.Text + "%' OR Type like '%" + textBox2.Text + "%' OR Further_Info like '%" + textBox2.Text + "%' "