为什么这个LINQ语句返回null而不是count = 0的IEnumerable

问题描述 投票:0回答:1

我有一个应该执行以下操作的方法: - 从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值。

我做错了什么 ?

c# linq ienumerable
1个回答
0
投票

我认为问题是'死人'不会是一个清单。这将是一个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();
}
© www.soinside.com 2019 - 2024. All rights reserved.