0

我正在查询对象列表。

其中一些对象具有可能具有空值的属性 startTime。

对于这些情况,我想生成一个随机数。对于其他情况,我想获得当前时间和相应的项目开始时间之间的差异

var data =  List.Select(e => new myCustomItem 
                             {
                                Item = e,
                                TimeDistance = (e.StartTime.HasValue ? (e.StartTime.Value - DateTime.Now).TotalMinutes : RandomNumber(-5000, 5000))
                             })
                .OrderBy(e => e.TimeDistance)
                .ToList();

这是应该在每个具有空值的结果时调用的函数。

private int RandomNumber(int min, int max)
    {
        Random random = new Random();
        return random.Next(min, max);
    }

问题是所有结果都接收到相同的值。

对于其他分配了 startDate(非空)的人,它正在执行计算。

4

1 回答 1

1

如果我理解正确,你想要这样的东西:

var random = new Random();
var data =  List.Select(e => new myCustomItem 
{
    Item = e , 
    TimeDistance = (e.StartTime.HasValue ? 
         (e.StartTime.Value - DateTime.Now).TotalMinutes :
          Enumerable.Range(-5, 5).OrderBy(i => random.NextDouble()).ToList().First()) 
}).OrderBy(e => e.TimeDistance).ToList();
于 2013-02-20T11:02:09.813 回答