我正在尝试使用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
现在数据类似.. User1有4个孩子,左边1个,右边3个,User2左边有两个孩子,依此类推。 由于user2是User1的子级,因此User2的子级也将成为User1的子级。所以根据上面的数据.User1左边总共有4个孩子,右边有5个孩子。如果有任何错误,可以解决问题。但我想要一些linq或sql代码来计算这些东西
这是虚拟数据,我的实际网站将包含至少20,000个数据,我必须在那里进行计算。请为我提供这方面的逻辑。
答案 0 :(得分: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