我有一个具有 2 个属性的自定义类的通用列表。这些属性存储了一个表单和另一个表单之间的关系。该列表被构造为分层列表(父/子)关系。我想要做的是根据将传递给函数的父表单引用获取所有表单的列表。我认为解决此问题的最佳方法是使用递归方法进行 LINQ 查询。我相信有人可以为我指明正确的方向
这是列表中使用的类
class FormStack {
#region Declares
private Form _form;
private Form _parent;
#endregion
#region Constructor
static FormStack()
{
}
#endregion
public Form Form
{
get { return _form; }
set { _form = value; }
}
public Form Parent
{
get { return _parent; }
set { _parent = value; }
}
}
所以我希望能够调用一个方法并将表单引用传递给该函数并获取与该父级相关的所有子表单。
这是我一直在绊倒的一些代码
// create a lookup list
var list = formStack.ToLookup( p => object.ReferenceEquals( p.Parent, parent ) );
// create a function
Func<IEnumerable<Form>, IEnumerable<Form>> recurse = null;
recurse = qs =>
{
return
qs
.Concat(
from q in qs
from q2 in recurse( list[] )
select q2 );
};
// filter the list
var children = recurse( list[parent] ).ToList();
我有一个具有标准 CRUD 功能的 winform 应用程序。假设有一个客户列表,每个客户可以有多个地址,每个地址都有多个建筑物,我构建表格的方式是有一个客户列表,从这个列表中你可以打开一个详细的表格一个特定的客户。此表格包含客户的详细信息和列表中的所有地址。此列表允许用户现在在列表中选择一个地址并打开包含建筑物列表等的地址详细信息表单......我的问题是我想关闭该客户的客户详细信息和所有相关表单. 我的想法是保持表格之间的关系,但也许我有更好的方法???