我需要根据过去30天的表格获得一系列对象。该表具有播放用户,接收用户和分数。阵列需要基于给予接收用户的最高分,然后是给予下一个接收用户的最高分,依此类推30天。
所以 A 赋予 B ,然后 B 赋予 C 和 C 给予 D 等,直到30天或者链中的用户没有给出任何东西。目前我可以完成前2个赠送,但我需要能够以某种方式将其包装在循环中
功能
public void CalRipple(UserDetail user)
{
var filterDate = DateTime.Now.AddDays(-30);
// First User
var firstUser = context.GamePlay.ToList()
.Where(_ => _.PlayingUserId == user.UserDetailId
&& _.PlayingDate >= filterDate)
.OrderByDescending(_ => _.points)
.Select(_ => new GamePlay{
Receiver = _.Receiver,
points = _.points
}).FirstOrDefault();
// Second User
var secondUser = context.GamePlay
.ToList()
.Where(_ => _.PlayingUserId == firstUser.Receiver.ReceivingUserId
&& _.PlayingDate >= filterDate)
.OrderByDescending(_ => _.points)
.Select(_ => new GamePlay {
Receiver = _.Receiver,
points = _.points
}).FirstOrDefault();
}
我不确定如何创建一个循环,以便循环的项目是上一个查询的用户结果。
答案 0 :(得分:0)
var finished = false;
List<GamePlay> res = new List<GamePlay>();
var currentUser = firstUser;
while (!finished)
{
var nextUser = getBiggestGiveSinceDate(currentUser, res, filterDate);
if (nextUser == null)
{
finished = true;
}
else
{
res.Add(nextUser);
currentUser = nextUser;
}
}