我有x个客户。对于每个客户,我进行数据库调用,返回List<DateTime>
。
每个列表可以为空或包含x个日期。
通过多个列表循环并保存到新列表
我想要实现的是,对于每个客户,我从列表中选取第一个日期(最早的),计算该日期在列表中的次数,然后将该数字保存到新的List<int> RegList
。
每个客户的第一个日期成为RegList
中的第一项,第二日期的第二项,等等
列表顾客一个
{2016年2月19日00:00:00,2016 -02-19 00:00:00}
RegList
现在应该:{2}
名单客户2
{2016年4月22日00:00:00,2016-04-22 00:00:00,2016-04-22 00:00:00,2016-04-25 00:00:00,2016-04-26 00:00:00, 2016-04-26 00:00:00,2016-05-02 00:00:00,2016-05-10 00:00:00}
RegList
现在应该是:{2 + 3,1,2 ,1,1} = {5,1,2,1,1}
在第一个客户my RegList
看起来正确之后:{2}。 第二位顾客my RegList
看起来像这样:{5,3,4,3,3,2},这是错误的。我应该怎么做?
编辑:日期并不重要。即使日期不同,任何客户的第一个日期都应添加到Reglist
中的第一个项目。
private void CalculateRegs(List<DateTime> eventList)
{
int num = 0;
int i = 0;
var distinctList = eventList.Distinct().ToList();
foreach (var date in distinctList)
{
num = eventList.Where(x => x.Equals(date)).Count();
if (RegsList.Count() <= i)
{
RegsList.Add(num);
}
else
{
var tempNum = num + RegsList.ElementAt(i);
RegsList.Insert(i, tempNum);
}
i++;
}
}
那岂不是更容易通过简单地使用组? –
来自“列出客户二”的“2 + 3”在哪里?我只看到“2016-04-11 00:00:00”的三个实例。 – arbitrarystringofletters
arbitrarystringofletters - 我做了更新。日期无关紧要,即使日期不同,客户的第一次约会也应始终添加到RegList [0]。 2 + 3来自顾客1和顾客2 3。 – Andy