簡體   English   中英

為什么這個LINQ語句返回null而不是count = 0的IEnumerable

[英]Why does this LINQ statement return null and not a IEnumerable with count=0

我有一個應該執行以下操作的方法: - 從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();
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM