0
似乎是這樣的事情已經被回答,但我無法找到它。
我有如下表:如何拼合自引用查詢?
Id Parent Text
-----------------------
1 NULL A
2 1 B
3 2 C
4 3 D
5 NULL E
6 5 F
7 6 G
現在我想有結果是這樣的:(List<string>
)
A
A > B
A > B > C
A > B > C > D
E
E > F
E > F > G
但問題是,這個項目,我做這個工作,用途數據庫第一,我的意思是沒有導航屬性,Parent
是string
的類型不是IEnumerable<T>
。
我迄今所做的:
var list = new List<string>();
string e2 = string.Empty;
foreach (var item in query)
{
string e1 = string.Empty;
if (item.Parent == null)
{
list.Add(p.Text);
e2 = item.Text;
}
else
{
foreach (var subItem in query.Where(t => t.Id == p.Parent))
{
if (subItem.Id != 1)
{
e1 = e2 + " > " + subItem.Text;
}
else
{
e1 = subItem.Text;
}
}
list.Add(e1 + " > " + p.Text);
}
}
顯示的定義'query'變量 –
它只是一個簡單的LINQ查詢:'VAR的查詢=從項目中myTable的 \t \t \t選擇項目;' –
有一個很大的區別,如果查詢是'IQueryable的'或' IEnumerable '。在第一種情況下,您將執行N個數據庫查詢。在第二種情況下,您接受的樸素算法將執行N * N個搜索。換句話說,兩者都是非常低效的。無論如何,問題是你的一切:) –