0

我正在尝试使用 LINQ,但我被困在这里。我的问题是我想检索特定一侧的所有用户的计数。让我解释。这是我的带有示例数据的表格快照。

ID 名称 SponsorID PairSide
1001 用户 1 1000 左
1002 用户 2 1001 左
1003 用户 3 1001 权利
1004 用户 4 1001 权利
1005 用户 5 1004 左
1006 用户 6 1004 权利
1007 用户 7 1002 左
1008 用户 8 1002 左
1009 用户 9 1003 权利
1010 用户 10 1001 权利

现在数据就像.. User1 有 4 个孩子,左侧有 1 个,右侧有 3 个,User2 左侧有两个孩子,依此类推。由于 user2 是 User1 的孩子,所以 User2 的孩子也将成为 User1 的孩子。所以根据上面的数据,User1一共有左边4个孩子,右边5个孩子。如有错误请见谅。但我想要一些 linq 或 sql 代码来计算这些东西

  1. 特定 ID 左侧的用户总数
  2. 特定 ID 权限的用户总数
  3. 枚举子用户,以便我可以使用它来显示树

这是虚拟数据,我的实际网站将包含至少 20,000 个数据,我必须在那里进行计算。请为此提供我的逻辑。

4

1 回答 1

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

于 2013-11-09T16:13:21.873 回答