我有一個數據表,它有2場FolderId,PARENT_ID。
我想篩選父項的所有子項並將其保存到另一個數據表中。 我能夠使用兩種方法和3個不同的循環實現這一點,沒有一個更簡單快捷的方式來實現這個使用Linq或什麼的。
這裏是我的代碼
public DataTable ChildrenOf(string parent, DataTable dtFolders)
{
DataTable result = new DataTable();
try
{
if (dtFolders != null)
{
result = dtFolders.Clone();
foreach (DataRow child in dtFolders.Rows)
{
if (child["FolderId"].ToString() == parent)
{
result.Rows.Add(child.ItemArray);
}
}
foreach (DataRow dr in dtFolders.Rows)
{
if (ChildrenOfParent(parent, dtFolders) != null)
{
result.Rows.Add(ChildrenOfParent(parent, dtFolders).ItemArray);
parent = ChildrenOfParent(parent, dtFolders).ItemArray[0].ToString();
}
}
}
}
catch (Exception)
{
throw;
}
return result;
}
public DataRow ChildrenOfParent(string parent, DataTable dtChild)
{
DataRow drChild;
drChild = null;
try
{
foreach (DataRow dr in dtChild.Rows)
{
if (dr["ParentId"].ToString() == parent)
{
drChild = dr;
}
}
}
catch (Exception)
{
throw;
}
return drChild;
}
我已經做了用遞歸方法之前,這個任務。我不知道你爲什麼想把結果放到數據表中。大多數時候最好的解決方案是放在樹視圖中。 Treeview提供了非常好的結果。 Linq不適用於遞歸代碼。 – jdweng