100分求一个查询统计。需要linq语法的
表
guid (用户GID) UGid(上级用户的guid )
04DAE39C-3032-4BF0-B65E-00066B86CD9D DB13A9A0-0635-4F11-A9A1-0007EA90EAA3
1DD458DA-4119-48A6-B95F-000B95C0F483 04DAE39C-3032-4BF0-B65E-00066B86CD9D
求查三级的总人数
用户的gid是 04DAE39C-3032-4BF0-B65E-00066B86CD9D 那么要查找 UGid是04DAE39C-3032-4BF0-B65E-00066B86CD9D的所有人数,,查询出来的人数他们的下级人数。 总和
要查这个用户下面三级的总人数。
语法要linq的
guid (用户GID) UGid(上级用户的guid )
04DAE39C-3032-4BF0-B65E-00066B86CD9D DB13A9A0-0635-4F11-A9A1-0007EA90EAA3
1DD458DA-4119-48A6-B95F-000B95C0F483 04DAE39C-3032-4BF0-B65E-00066B86CD9D
求查三级的总人数
用户的gid是 04DAE39C-3032-4BF0-B65E-00066B86CD9D 那么要查找 UGid是04DAE39C-3032-4BF0-B65E-00066B86CD9D的所有人数,,查询出来的人数他们的下级人数。 总和
要查这个用户下面三级的总人数。
语法要linq的
...全文
请发表友善的回复…
发表回复
yzf86211861 2017-12-18
- 打赏
- 举报
这是个个人中心统计粉丝的逻辑。。。。 登陆的时候查询有点uos粉丝。要等很久。
很多人登陆的时候 基本就挂了[/quote]
如果卡死,那是其他原因,设计上存在缺陷把。重申一下,linq不提升性能,寄希望于用linq写一下就解决问题了,做不到的。[/quote]
好吧。。只能去存储过程了~~~[/quote]
LINQ 从某种程度 上来说 是影响性能的,不可能提高性能,虽然 现在设备 很强大 影响 很小.
吴太乙 2017-12-18
- 打赏
- 举报
在表中加一个topid 意思就是最顶级的id
id name parsentid topid
1 A 0 0
2 B 1 1
3 C 2 1
4 D 2 1
5 E 4 1
6 F 5 1
7 G 6 1
非专业开发Five 2017-12-18
- 打赏
- 举报
业务上遇到这种问题解决方案是缓存一份前一日的,这种东西并不需要即时更新。
如果一定需要及时性,就做一个表,每次新增的时候递归。
ljsheng 2017-12-18
- 打赏
- 举报
这个不行,,,
7的上级有123456 逻辑不行。
这样我要找6的下级的时候。。就找不到7了
目前偶只能注册一个用户就统计到各个用户的人数字段里去
ljsheng 2017-12-18
- 打赏
- 举报
也是个办法。
ljsheng 2017-12-18
- 打赏
- 举报
目前正在考虑换这个办法
ljsheng 2017-12-17
- 打赏
- 举报
现在递归 要20秒左右。。。
哎。。
public static int AllMember(List<Member> Member, Guid gid, int loop)
{
loop--;
int num = 0;
var fs = Member.Where(l => l.MemberGid == gid).ToList();
num = fs.Count();
if (loop != 0)
{
foreach (var dr in fs)
{
num += Helper.AllMember(Member, dr.Gid, loop);
}
}
return num;
}
清风道禅 2017-12-16
- 打赏
- 举报
1.可以考虑用Linq 逐层递归
2.不管你是用SQL 还是LINQ 都是递归
主要是看你牺牲数据库的性能 还是程序的性能而已
ljsheng 2017-12-15
- 打赏
- 举报
这是个个人中心统计粉丝的逻辑。。。。 登陆的时候查询有点uos粉丝。要等很久。
很多人登陆的时候 基本就挂了[/quote]
如果卡死,那是其他原因,设计上存在缺陷把。重申一下,linq不提升性能,寄希望于用linq写一下就解决问题了,做不到的。[/quote]
好吧。。只能去存储过程了~~~
圣殿骑士18 2017-12-15
- 打赏
- 举报
这是个个人中心统计粉丝的逻辑。。。。 登陆的时候查询有点uos粉丝。要等很久。
很多人登陆的时候 基本就挂了[/quote]
如果卡死,那是其他原因,设计上存在缺陷把。重申一下,linq不提升性能,寄希望于用linq写一下就解决问题了,做不到的。
ljsheng 2017-12-15
- 打赏
- 举报
这是个个人中心统计粉丝的逻辑。。。。 登陆的时候查询有点uos粉丝。要等很久。
很多人登陆的时候 基本就挂了
圣殿骑士18 2017-12-15
- 打赏
- 举报
内存运算,普通笔记本,1000w次循环也就20ms,几万次就卡死,不可能的。
圣殿骑士18 2017-12-15
- 打赏
- 举报
几万个下级的话 递归要查询几万次。。会卡死[/quote]
linq的本质是什么?也就是循环而已。linq并不提升性能
ljsheng 2017-12-15
- 打赏
- 举报
几万个下级的话 递归要查询几万次。。会卡死
圣殿骑士18 2017-12-15
- 打赏
- 举报
这种东西,用linq写应该比较难,即使写出来了,也只是炫技,没有实用效果。
因为你现在只有三层,但一般来说实现实际的需求,不能固定只有三层。所以正确的方式,就是写一个递归方法,能处理无限层次的统计。
ljsheng 2017-12-15
- 打赏
- 举报
在线等
在线等!
在线等~