我有一个对象列表。我的课程看起来像这样:
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
和C
以及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.
答案 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 + "%' "