[英]How do I check for an empty IEnumerable<DataRow> collection?
根據同一問題的答案: 如何檢查IEnumerable <DataRow>返回null或有任何行? 我發現大多數谷歌搜索結果,你可以使用.Any()來驗證該集合至少包含一個項目。
但是,在以下代碼中,.Any()拋出“未設置為對象實例的對象引用”異常。 有人可以指出我做錯了什么嗎?
DataSet navData = GetNavigationData();
bool linkFound = false;
if(!CommonLibrary.IsDataSetEmpty(navData))
{
IEnumerable<DataRow> foundLinks = from link in navData.Tables[0].AsEnumerable()
where link.Field<string>("URL").ToLower() == searchURL
select link;
linkFound = (foundLinks.Any());
}
相關的堆棧跟蹤顯示異常來自Any()調用:
at System.Linq.Enumerable.WhereEnumerableIterator`1.MoveNext()
at System.Linq.Enumerable.Any[TSource](IEnumerable`1 source)
at MyMethod in MySource.cs:line 259
你的問題不是Any()
是問題。 您的問題是您嘗試在查詢中訪問的字段很可能返回null
。
我檢查navData不為null
,Tables不為null
, Tables[0]
不為null。 Any()使用延遲執行,因此當您分配查詢時,它不一定會被請求處理,直到請求它為止,這恰好是在調用Any()
時。 因此,在實際迭代之前,查詢的任何問題都不會顯現。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.