2013-11-09 19 views
0

我試圖使用LINQ工作,我在這裏停留。我的問題是我想檢索特定方的所有用戶的計數。讓我解釋。這裏是我的示例數據錶快照。得到表中的值以遞歸方式

 
ID Name SponsorID PairSide 
1001 User1 1000 Left 
1002 User2 1001 Left 
1003 User3 1001 Right 
1004 User4 1001 Right 
1005 User5 1004 Left 
1006 User6 1004 Right 
1007 User7 1002 Left 
1008 User8 1002 Left 
1009 User9 1003 Right 
1010 User10 1001 Right 

現在數據是如..用戶1具有4個孩子的,1左側和3中右側,用戶2同時具有在左,所以在兩個孩子的。 由於user2是User1的子項,因此User2的子項也將成爲User1的子項。因此根據以上數據,用戶1共有4個孩子在左邊,5個孩子在右邊。如果有任何錯誤,請記錄。但我想一些LINQ或SQL代碼來計算這些東西

  1. 用戶總數中留下了一個特定的ID的
  2. 的用戶總數在一個特定的ID
  3. 兒童用戶的枚舉,這樣的權我可以用它來顯示樹

這是虛擬數據,我的實際網站將包含至少20,000數據,我必須在那裏做計算。請爲我提供邏輯。下面的代碼

+0

_Please提供給我..._堆棧溢出的規則是:先試,然後問。在Stack Overflow中,遞歸查詢LINQ是一個反覆出現的問題。如果你尋找遞歸(或分層)查詢+ LINQ,你會發現很多答案。嗯,實際上,由於LINQ +遞歸不適合,所以缺乏答案。另外,當你標記[linq]時,假設你將目標定位到了linq-to-objects,而你顯然沒有這樣做。瞭解LINQ的類型總是很重要。正如你所定位的數據庫一樣。 –

回答

0

嘗試

Declare @table table
(ID int,
Name varchar(20),
SponsorID int,
PairSide varchar(10)
)
insert into @table(ID,Name,SponsorID,PairSide)
values(1001, 'User1', 1000 ,'Left'),
(1002, 'User2', 1001, 'Left'),
(1003, 'User3' ,1001 ,'Right'),
(1004, 'User4' ,1001, 'Right'),
(1005, 'User5' ,1004 ,'Left'),
(1006, 'User6' ,1004 ,'Right'),
(1007, 'User7' ,1002 ,'Left'),
(1008, 'User8' ,1002 ,'Left'),
(1009, 'User9' ,1003 ,'Right'),
(1010, 'User10', 1001, 'Right')
Select Sponsorid,
Count(SponsorID) TotalChild ,
Count((Case when PairSide = 'Left' Then 1 end)) LeftChild ,
Count((Case when PairSide = 'Right' Then 1 end)) RightChild
from @table
Group by SponsorID

+0

這是件好事,但它給只有一個級別的輸出即1001的1002兒童或其孩子的我想1001 1002 1002也即孩子的subchilds是1001個孩子 –

相關問題