1
我正在使用Linq創建樹層次結構,因爲我是新手,所以我面臨麻煩。我已經從其中我要創建層級兩個表和表如下使用Linq構建樹層次結構
表A
Id
Name
Description
表B
Id of A (as foreign key)
Name
我需要像結構這個:
name(From table A)
|_name(from table B)
|_name (from table B)
name(from table A)
我有一個類定義爲
Public Class C
{
public class C(C item,IEnumerable<C> id,IEnumerable<C> data)
{
AId=item.AI;
BId=item.BId;
AName=item.Name;
Childeren=id;
}
public IEnumerable<C> Children{get;set}
}
所有表的名稱必須顯示,即使它不具有節點
我曾經集團攜手獲得無論從表中的數據,現在我有問題代碼來選擇節點及其子節點。我的linq代碼如下:
private List<Model> BuildHierarchy(IEnumerable<Model> Hirs)
{
var families=Hirs.ToLookup(x => x.AId);
var topmost = families.First().Select(s => s);
Func<string, IList<Model>> children = null;
children = (parentId) => families[parentId]
.OrderBy(x => x.BId)
.Select(x => new Model(x, children(x.BId), Hirs))
.OrderBy(o=> o.Bid).ToList();
return topmost.Select(mod => new Model(mod, children(mod.BId), Hirs)).ToList();
}
它所做的只是獲取表A的第一個節點,但節點中的所有數據。當我點擊節點時,該方法會再次被調用,從而創建相同的節點。
我不知道爲什麼我有這個問題,如果你們會幫助我,這將是一個很大的幫助,因爲我在這裏呆了很長一段時間。
謝謝
什麼是'Model'?顯示你在哪裏調用'BuildHierarchy'? – 2013-04-05 07:35:26
模型用於保存來自數據庫的數據所在的數據。 BuildHierarchy在模型填充後調用,上面的代碼應該創建節點及其子註釋 – shunilkarki 2013-04-05 09:22:19
這是一個向您的帖子中添加代碼的調用。目前還不清楚你如何調用'BuildHierarchy'和輸出的位置。另外,代碼中的類「A」和「B」在哪裏? – 2013-04-05 10:05:36