我有一个应该执行以下操作的方法: - 从Web服务中检索对象列表(按预期工作) - 根据几个标准返回这些对象的子集(不起作用)
private List<AliveDTO> getDeads()
{
List<AliveDTO> DTOs = APIRequests.Instance.GetAliveDTOs();
var deads = DTOs.Where(x =>
x.watchWindowStartTime.CompareTo(DateTime.Now) < 0 ||
x.watchWindowEndTime.CompareTo(DateTime.Now) > 0 &&
DateTime.Now > x.timeReceived.AddMinutes((double)x.NextAliveWithinMinutes));
List<AliveDTO> deadInList = deads as List<AliveDTO>;
return deadInList;
}
如果列表中的实体没有匹配标准,我期望变量deads是一个IEnumerable,其中count = 0,但是我得到一个null值。
我做错了什么 ?
我认为问题是'死人'不会是一个清单。这将是一个IEnumerable。添加.ToList()Linq命令会使'deads'成为一种List。我也会稍微重构一下,因为你在死亡之下创建了第二个List。 :)
private List<AliveDTO> getDeads()
{
List<AliveDTO> DTOs = APIRequests.Instance.GetAliveDTOs();
return DTOs.Where(x =>
x.watchWindowStartTime.CompareTo(DateTime.Now) < 0 ||
x.watchWindowEndTime.CompareTo(DateTime.Now) > 0 &&
DateTime.Now > x.timeReceived.AddMinutes((double)x.NextAliveWithinMinutes)).ToList();
}