我正在创建一个包含不同对象List<object>
的列表,我需要在它们上使用linq。
所有对象都具有“ name”属性,这是一些类对象:
class project_node
{
public string name { get;set; } // SAME
public int level{ get; set; }
public compiler_enum compiler{ get; set; }
}
class resource_node
{
public string name { get;set; } // SAME
public int level{ get; set; }
public byte[] resource_data { get; set; }
public compiler_enum compiler{ get; set; }
}
class codeblock_node
{
public string name { get;set; } // SAME
public string filename{ get;set; }
public int level{ get; set; }
public string code{ get; set; }
public compiler_enum compiler{ get; set; }
}
所以我的列表中有一些project_node,一些resource_node和一些codeblock_node ...
project_file_list
的声明:
List<object> project_file_list = new List<object>{};
如何使用linq在列表中查找和匹配名称? 像这样的东西:
object find_target = project_file_list.Find(findobj => findobj.name == "Name");
答案 0 :(得分:3)
您可以使用如下界面:
interface IHaveName
{
string name {get;}
}
然后,所有对象都可以实现此接口:
class project_node: IHaveName
{ … }
您的列表应该是IHaveName的列表,而不是对象的列表
List<IHaveName> project_file_list = new List<IHaveName>
… etc...
,您的LINQ即可使用。
答案 1 :(得分:1)
由于要列出通用对象,因此将无法像平常一样进入相应的属性。
您可以执行以下操作:
client.startup_id