[英]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.